Junior — Middle
Aký výsledok vracia vstavaná funkcia len pri volaní na reťazci?
sobes.tech AI
Odpoveď od AI
V Go vstavaná funkcia len, keď sa volá na reťazci, vráti počet bajtov v tomto reťazci, nie počet znakov (rún).
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 je rovnaký ako počet znakov. Ak však reťazec obsahuje viacbajtové znaky (napríklad cyriliku, emoji), len vráti súčet bajtov, nie počet znakov.
Príklad:
s := "Привет"
fmt.Println(len(s)) // Zobrazí počet bajtov, napríklad 12
runes := []rune(s)
fmt.Println(len(runes)) // Zobrazí počet znakov, napríklad 6
Ak chcete získať počet znakov (rún), musíte reťazec previesť na pole rún a získať jeho dĺžku.