Sobes.tech
Junior — Middle

Jakou hodnotu vrací metoda length při volání na řetězci?

sobes.tech AI

Odpověď od AI

V Go metoda len, když je volána na řetězci, vrací počet bajtů v řetězci, nikoliv počet znaků. To je způsobeno tím, že řetězce v Go jsou sekvence bajtů kódovaných v UTF-8. Pokud řetězec obsahuje pouze ASCII znaky, počet bajtů odpovídá počtu znaků. Ale pokud jsou v řetězci vícejazyčné znaky, každý z nich může zabírat několik bajtů.

Příklad:

package main
import (
    "fmt"
)

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

Pro spočítání počtu znaků (rune) je třeba použít funkci utf8.RuneCountInString z balíčku unicode/utf8.