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.