Sobes.tech
Junior — Middle

Aké informácie vracia funkcia len pri spracovaní reťazca?

sobes.tech AI

Odpoveď od AI

V jazyku Go funkcia len, keď je aplikovaná na reťazec, vráti počet bajtov v tomto reťazci, nie počet znakov (runeov).

To je spôsobené tým, že reťazce v Go sú uložené vo formáte UTF-8, kde jeden znak môže zaberáť od 1 do 4 bajtov. Preto len vracia dĺžku v bajtoch.

Príklad:

package main
import (
    "fmt"
)

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

Ak chcete získať počet znakov (runeov), musíte reťazec previesť na slice runeov:

runes := []rune(s)
fmt.Println(len(runes)) // Zobrazí počet znakov, napríklad 6

Takže, len pri reťazci je dĺžka v bajtoch, nie v znakoch.