Junior — Middle
Milyen eredményt ad vissza az beépített len függvény egy sztring esetén?
sobes.tech MI
Válasz az MI-től
Go-ban a beépített len függvény, ha egy stringre hívják meg, akkor annak bájtok számát adja vissza, nem a karakterek (runák) számát.
Ez azért van, mert a Go-ban a stringek UTF-8 kódolású bájtsorozatok. Ha a string csak ASCII karaktereket tartalmaz, akkor a bájtok száma megegyezik a karakterek számával. De ha a string többbájtos karaktereket tartalmaz (pl. cirill, emoji), akkor a len a bájtok összegét adja vissza, nem a karakterek számát.
Példa:
s := "Привет"
fmt.Println(len(s)) // Meg fogja mutatni a bájtok számát, pl. 12
runes := []rune(s)
fmt.Println(len(runes)) // Meg fogja mutatni a karakterek számát, pl. 6
Ha a karakterek (runák) számát szeretnéd, akkor a stringet rune szeletté kell alakítani, és annak hosszát kell lekérdezni.