Sobes.tech
Junior — Middle

Koji rezultat vraća ugrađena funkcija len kada se pozove na stringu?

sobes.tech АИ

Одговор од АИ

U Go, ugrađena funkcija len kada se pozove na string, vraća broj bajtova u tom stringu, a ne broj karaktera (runova).

To je zato što su stringovi u Go sekvence bajtova kodiranih u UTF-8. Ako string sadrži samo ASCII karaktere, broj bajtova je jednak broju karaktera. Ali ako string sadrži višebajtne karaktere (npr. ćirilicu, emoji), len će vratiti zbir bajtova, a ne broj karaktera.

Primer:

s := "Привет"
fmt.Println(len(s)) // Prikazaće broj bajtova, na primer 12

runes := []rune(s)
fmt.Println(len(runes)) // Prikazaće broj karaktera, na primer 6

Ako želite da dobijete broj karaktera (runova), morate konvertovati string u rez runova i uzeti njegovu dužinu.