Ποιες είναι οι λεπτομέρειες κατά την επανάληψη σε μια συμβολοσειρά στο Go;
sobes.tech AI
Απάντηση από AI
Κατά την επανάληψη σε μια συμβολοσειρά στο Go, είναι σημαντικό να θυμάστε ότι η συμβολοσειρά αντιπροσωπεύει μια ακολουθία byte, όχι χαρακτήρες Unicode. Το πακέτο unicode/utf8 παρέχει λειτουργίες για εργασία με πολυ-byte ακολουθίες UTF-8.
Βασικά σημεία:
-
Επανάληψη μέσω bytes: Ο βρόχος
for i := 0; i < len(s); i++επαναλαμβάνει σε μεμονωμένα bytes. Αν η συμβολοσειρά περιέχει πολυ-byte χαρακτήρες, ένας χαρακτήρας μπορεί να εκπροσωπείται από πολλά bytes.// Παράδειγμα επανάληψης μέσω bytes str := "Привет" for i := 0; i < len(str); i++ { println(str[i]) // εμφανίζει bytes, όχι χαρακτήρες } -
Επανάληψη μέσω ρούν (σημεία κώδικα Unicode): Για σωστή εργασία με χαρακτήρες Unicode, πρέπει να χρησιμοποιείτε τον βρόχο
for index, ru := range s. Αυτό επαναλαμβάνει μέσω ρούν (σημεία κώδικα Unicode), διαχειρίζοντας πολυ-byte ακολουθίες UTF-8.// Παράδειγμα επανάληψης μέσω ρούν str := "Привет" for index, ru := range str { println(index, ru) // εμφανίζει το αρχικό index της ρούν και την ίδια τη ρούν (ως int32) } -
Μήκος συμβολοσειράς: Η συνάρτηση
len(s)επιστρέφει τον αριθμό των bytes, όχι των ρούν. Για να πάρετε τον αριθμό των ρούν, χρησιμοποιήστεutf8.RuneCountInString(s).// Παράδειγμα καταμέτρησης bytes και ρούν str := "Привет" println("Μήκος σε bytes:", len(str)) // εμφανίζει τον αριθμό των bytes println("Μήκος σε ρούν:", utf8.RuneCountInString(str)) // εμφανίζει τον αριθμό των ρούν -
Πρόσβαση με δείκτη: Η πρόσβαση
s[i]επιστρέφει το i-οστό byte, όχι τη ρούν. Η άμεση πρόσβαση σε ρούν με δείκτη δεν υποστηρίζεται.// Παράδειγμα πρόσβασης σε byte str := "Привет" println(str[0]) // εμφανίζει το πρώτο byte της συμβολοσειράς, όχι την πρώτη ρούν -
Κοπή συμβολοσειρών: Οι κοπές συμβολοσειρών λειτουργούν επίσης σε επίπεδο bytes.
s[i:j]δημιουργεί μια νέα υπο-ακολουθία bytes.// Παράδειγμα κοπής συμβολοσειράς σε bytes str := "Привет" println(str[0:2]) // μπορεί να εμφανίσει μια λανθασμένη ακολουθία αν τα πρώτα δύο bytes δεν σχηματίζουν μια πλήρη ρούν
Για αξιόπιστη εργασία με Unicode στο Go, συνιστάται η χρήση επανάληψης μέσω ρούν (range) και συναρτήσεων από το πακέτο unicode/utf8.