Junior — Middle
Hogyan határozható meg egy karakter által elfoglalt byte méret egy sztringben?
sobes.tech MI
Válasz az MI-től
Go nyelvben a (string) egy UTF-8 kódolású bájtokból álló sorozatot jelent. Annak meghatározásához, hogy egy karakter (egy rune) hány bájt, figyelembe kell venni, hogy különböző karakterek eltérő számú bájtot foglalhatnak el.
Ha meg akarod tudni egy adott karakter méretét bájtban, akkor a stringet átalakíthatod egy rune szeletté ([]rune), és összehasonlíthatod az eredeti string hosszát a rune szelet hosszával.
Példa:
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("Karakter: %c 2 bájt\n", r, width)
w = width
}
}
Itt, az utf8.DecodeRuneInString visszaadja a rune-t és a hozzá tartozó bájtok számát. Így meghatározható minden karakter mérete bájtban.