Sobes.tech
Junior — Middle

Ako určiť veľkosť v bajtoch, ktorú zaberá jeden znak v reťazci?

sobes.tech AI

Odpoveď od AI

V jazyku Go predstavuje reťazec (string) sled bajtov v kódovaní UTF-8. Aby ste určili, koľko bajtov zaberá jeden znak (runa), musíte vziať do úvahy, že rôzne znaky môžu zaberáť rôzny počet bajtov.

Ak chcete zistiť veľkosť konkrétneho znaku v bajtoch, môžete previesť reťazec na rez run ([]rune) a porovnať dĺžku pôvodného reťazca s dĺžkou rezov run.

Príklad:

package main
import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "Привет"
    for i, w := 0, 0; i < len(s); i += w {
        r, width := utf8.DecodeRuneInString(s[i:])
        fmt.Printf("Znak: %c zaberá %d bajtov\n", r, width)
        w = width
    }
}

Tu, utf8.DecodeRuneInString vracia runu a počet bajtov, ktoré zaberá. Týmto spôsobom je možné určiť veľkosť každého znaku v bajtoch.