Junior — Middle
Millist tulemust tagastab sisseehitatud funktsioon len, kui seda kutsutakse stringil?
sobes.tech AI
Vastus AI-lt
Go-s sisseehitatud funktsioon len, kui seda kutsutakse stringi peal, tagastab selle stringi baitide arvu, mitte märkide (rune) arvu.
See on tingitud sellest, et Go stringid on baitide järjestused, mis on kodeeritud UTF-8-s. Kui string sisaldab ainult ASCII märke, on baitide arv võrdne märkide arvuga. Kuid kui string sisaldab mitme baitiga märke (näiteks kirillitsa, emoji), siis len tagastab baitide summa, mitte märkide arvu.
Näide:
s := "Привет"
fmt.Println(len(s)) // Näitab baitide arvu, näiteks 12
runes := []rune(s)
fmt.Println(len(runes)) // Näitab märkide arvu, näiteks 6
Kui soovite saada märkide (rune) arvu, peate konverteerima stringi rune-ideks ja võtma selle pikkuse.