Sobes.tech
Junior — Middle

Jaké informace vrací funkce len při zpracování řetězce?

sobes.tech AI

Odpověď od AI

V jazyce Go funkce len, když je aplikována na řetězec, vrací počet bajtů v tomto řetězci, nikoli počet znaků (rune).

To je způsobeno tím, že řetězce v Go jsou uloženy ve formátu UTF-8, kde jeden znak může zabírat od 1 do 4 bajtů. Proto len vrací délku v bajtech.

Příklad:

package main
import (
    "fmt"
)

func main() {
    s := "Привет" // ruské slovo
    fmt.Println(len(s)) // Zobrazí počet bajtů, například 12
}

Pokud chcete získat počet znaků (rune), musíte převést řetězec na slice rune:

runes := []rune(s)
fmt.Println(len(runes)) // Zobrazí počet znaků, například 6

Takže, len u řetězce je délka v bajtech, nikoli počet znaků.