Junior — Middle
Jaký výsledek vrací vestavěná funkce len při volání na řetězci?
sobes.tech AI
Odpověď od AI
V Go vestavěná funkce len, když je volána na řetězci, vrací počet bajtů v tomto řetězci, nikoli počet znaků (runů).
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, je počet bajtů roven počtu znaků. Pokud však řetězec obsahuje vícibajtové znaky (například cyrilici, emoji), len vrátí součet bajtů, nikoli počet znaků.
Příklad:
s := "Привет"
fmt.Println(len(s)) // Zobrazí počet bajtů, například 12
runes := []rune(s)
fmt.Println(len(runes)) // Zobrazí počet znaků, například 6
Pokud chcete získat počet znaků (runů), musíte převést řetězec na řez runů a vzít jeho délku.