Sobes.tech
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.