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