Junior — Middle
Jakou hodnotu vrací metoda length při volání na řetězci?
sobes.tech AI
Odpověď od AI
V Go metoda len, když je volána na řetězci, vrací počet bajtů v řetězci, nikoliv počet znaků. To je způsobeno tím, že řetězce v Go jsou sekvence bajtů kódovaných v UTF-8. Pokud řetězec obsahuje pouze ASCII znaky, počet bajtů odpovídá počtu znaků. Ale pokud jsou v řetězci vícejazyčné znaky, každý z nich může zabírat několik bajtů.
Příklad:
package main
import (
"fmt"
)
func main() {
s := "Привет"
fmt.Println(len(s)) // Zobrazí počet bajtů, například 12
}
Pro spočítání počtu znaků (rune) je třeba použít funkci utf8.RuneCountInString z balíčku unicode/utf8.