Junior — Middle
Τι πληροφορίες επιστρέφει η συνάρτηση len κατά την επεξεργασία μιας συμβολοσειράς;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, η συνάρτηση len που εφαρμόζεται σε μια συμβολοσειρά επιστρέφει τον αριθμό των bytes σε αυτήν τη συμβολοσειρά, όχι τον αριθμό των χαρακτήρων (runes).
Αυτό συμβαίνει επειδή οι συμβολοσειρές στο Go αποθηκεύονται σε μορφή UTF-8, όπου ένας χαρακτήρας μπορεί να καταλαμβάνει από 1 έως 4 bytes. Επομένως, το len επιστρέφει το μήκος σε bytes.
Παράδειγμα:
package main
import (
"fmt"
)
func main() {
s := "Привет" // ρωσική λέξη
fmt.Println(len(s)) // Θα εμφανίσει τον αριθμό των bytes, π.χ. 12
}
Αν θέλετε να πάρετε τον αριθμό των χαρακτήρων (runes), πρέπει να μετατρέψετε τη συμβολοσειρά σε ένα slice από runes:
runes := []rune(s)
fmt.Println(len(runes)) // Θα εμφανίσει τον αριθμό των χαρακτήρων, π.χ. 6
Έτσι, το len για μια συμβολοσειρά είναι το μήκος σε bytes, όχι σε χαρακτήρες.