Πώς μπορεί κανείς να εργαστεί με τις συμβολοσειρές στη γλώσσα Go;
sobes.tech AI
Απάντηση από AI
Οι συμβολοσειρές στο Go είναι αμετάβλητες ακολουθίες byte. Μπορούν να αντιπροσωπεύουν τόσο κείμενο UTF-8 όσο και αυθαίρετα δυαδικά δεδομένα.
Βασικοί τρόποι εργασίας:
-
Δήλωση και αρχικοποίηση:
var s1 string // Κενή συμβολοσειρά s2 := "γεια" // Αρχικοποίηση με λεκτικό συμβολοσειράς s3 := `πολλές γραμμές συμβολοσειρά` // Ακατέργαστο λεκτικό συμβολοσειράς -
Μήκος συμβολοσειράς:
len(s2) // Μήκος σε bytes. Για "γεια" θα είναι 4. -
Πρόσβαση σε bytes:
b := s2[0] // Λήψη byte στη θέση. Επιστρέφει 'γ' (σε UTF-8).Η άμεση πρόσβαση σε bytes δεν εγγυάται την λήψη πλήρους χαρακτήρα UTF-8.
-
Πρόσβαση σε ρούνες (χαρακτήρες UTF-8): Οι συμβολοσειρές μπορούν να επαναληφθούν με βάση τις ρούνες:
for index, runeValue := range s2 { fmt.Printf("Δείκτης: %d, Ρούνα: %c\n", index, runeValue) }Μήκος σε ρούνες:
utf8.RuneCountInString(s2) // Μήκος σε ρούνες. Για "γεια" θα είναι 4. -
Συνένωση συμβολοσειρών:
str1 := "γειά" str2 := " κόσμος" result := str1 + str2 // Συνένωση με +Για αποτελεσματική συνένωση πολλών συμβολοσειρών, χρησιμοποιήστε το
strings.Builder.var sb strings.Builder sb.WriteString("γειά") sb.WriteString(" ") sb.WriteString("κόσμος") result := sb.String() // Λήψη της τελικής συμβολοσειράς -
Μετατροπή μεταξύ συμβολοσειρών και τμημάτων byte/ρούνων:
byteslice := []byte(s2) // Συμβολοσειρά σε τμήμα byte rs := []rune(s2) // Συμβολοσειρά σε τμήμα ρούνων backToString := string(byteslice) // Τμήμα byte σε συμβολοσειρά backToString = string(rs) // Τμήμα ρούνων σε συμβολοσειρά -
Πακέτο
strings: Παρέχει πολλές χρήσιμες συναρτήσεις:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Πακέτο
strconv: Για μετατροπή συμβολοσειρών σε άλλους τύπους δεδομένων (αριθμούς, boolean) και αντίστροφα.i, err := strconv.Atoi("123") // Συμβολοσειρά σε int s := strconv.Itoa(456) // Int σε συμβολοσειρά -
Αμεταβλητότητα: Οποιεσδήποτε λειτουργίες που φαίνεται να τροποποιούν μια συμβολοσειρά (π.χ. συνένωση), στην πραγματικότητα δημιουργούν μια νέα συμβολοσειρά. Αυτό είναι σημαντικό για την απόδοση σε συχνές αλλαγές. Σε τέτοιες περιπτώσεις, είναι καλύτερο να χρησιμοποιείτε
[]byteήstrings.Builder.