Junior — Middle
Akú hodnotu vracia metóda length pri volaní na reťazci?
sobes.tech AI
Odpoveď od AI
V Go, metóda len, keď sa volá na reťazci, vráti počet bajtov v reťazci, nie počet znakov. To je spôsobené tým, že reťazce v Go sú sekvencie bajtov kódované v UTF-8. Ak reťazec obsahuje iba ASCII znaky, počet bajtov zodpovedá počtu znakov. Ale ak sú v reťazci viacjazyčné znaky, každý z nich môže zaberáť niekoľko bajtov.
Príklad:
package main
import (
"fmt"
)
func main() {
s := "Привет"
fmt.Println(len(s)) // Zobrazí počet bajtov, napríklad 12
}
Na spočítanie počtu znakov (rune) je potrebné použiť funkciu utf8.RuneCountInString z balíka unicode/utf8.