Sobes.tech
Junior — Middle

Akú hodnotu vracia metóda length pri volaní na reťazci?

sobes.tech AI

Odpoveď od AI

V Go, metóda len, keď sa volá na reťazci, vráti počet bajtov v reťazci, nie počet znakov. To je spôsobené tým, že reťazce v Go sú sekvencie bajtov kódované v UTF-8. Ak reťazec obsahuje iba ASCII znaky, počet bajtov zodpovedá počtu znakov. Ale ak sú v reťazci viacjazyčné znaky, každý z nich môže zaberáť niekoľko bajtov.

Príklad:

package main
import (
    "fmt"
)

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

Na spočítanie počtu znakov (rune) je potrebné použiť funkciu utf8.RuneCountInString z balíka unicode/utf8.