Sobes.tech
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.