Junior — Middle
Kako odrediti veličinu u bajtovima koju zauzima jedan znak u nizu?
sobes.tech АИ
Одговор од АИ
U jeziku Go, niz (string) predstavlja sekvencu bajtova u UTF-8 kodiranju. Da biste odredili koliko bajtova zauzima jedan znak (runa), morate uzeti u obzir da različiti znakovi mogu zauzimati različit broj bajtova.
Ako želite da saznate veličinu određenog znaka u bajtovima, možete konvertovati niz u rez runa ([]rune) i uporediti dužinu originalnog niza sa dužinom rez-a runa.
Primer:
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 zauzima %d bajta\n", r, width)
w = width
}
}
Ovde, utf8.DecodeRuneInString vraća runu i broj bajtova koje ona zauzima. Na ovaj način, može se odrediti veličina svakog znaka u bajtovima.