Junior — Middle
Ce rezultat returnează funcția încorporată len atunci când este apelată pe un șir de caractere?
sobes.tech AI
Răspuns de la AI
În Go, funcția încorporată len atunci când este apelată pe un șir de caractere returnează numărul de octeți din acel șir, nu numărul de caractere (rune).
Acest lucru se datorează faptului că șirurile în Go sunt secvențe de octeți codificate în UTF-8. Dacă șirul conține doar caractere ASCII, atunci numărul de octeți este egal cu numărul de caractere. Dar dacă șirul conține caractere multibyte (de exemplu, chirilice, emoji), atunci len va returna suma octeților, nu numărul de caractere.
Exemplu:
s := "Привет"
fmt.Println(len(s)) // Va afișa numărul de octeți, de exemplu 12
runes := []rune(s)
fmt.Println(len(runes)) // Va afișa numărul de caractere, de exemplu 6
Dacă doriți să obțineți numărul de caractere (rune), trebuie să convertiți șirul într-un slice de rune și să luați lungimea acestuia.