Sobes.tech
Junior — Middle

Kokį rezultatą grąžina įmontuota funkcija len, iškviesta eilutėje?

sobes.tech AI

Atsakymas iš AI

Go viduje esanti len funkcija, iškvietus ją eilutėje, grąžina baitų skaičių šioje eilutėje, o ne simbolių (runų) skaičių.

Tai yra todėl, kad eilutės Go yra baitų sekos, koduotos UTF-8. Jei eilutė turi tik ASCII simbolius, baitų skaičius yra lygus simbolių skaičiui. Tačiau jei eilutėje yra daugia baitiniai simboliai (pvz., kirilica, emoji), len grąžins baitų sumą, o ne simbolių skaičių.

Pavyzdys:

s := "Привет"
fmt.Println(len(s)) // Parodys baitų skaičių, pvz., 12

runes := []rune(s)
fmt.Println(len(runes)) // Parodys simbolių skaičių, pvz., 6

Jei norite gauti simbolių (runų) skaičių, turite konvertuoti eilutę į runų masyvą ir paimti jo ilgį.