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į.