Sobes.tech
Junior — Middle

Kuidas määrata ühe tähemärgi suurus baitides?

sobes.tech AI

Vastus AI-lt

Go keeles, string (string) on UTF-8 kodeeringus byte'ide jada. Selleks, et määrata, kui palju baitt ühe märgi (runa) jaoks on vaja, tuleb arvestada, et erinevad märgid võivad võtta erinevat arvu baitte.

Kui soovite teada konkreetse märgi suurust baitides, saate stringi teisendada rune'id ([]rune) järjeks ja võrrelda algse stringi pikkust rune'id järjega.

Näide:

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("Märk: %c võtab %d baiti\n", r, width)
        w = width
    }
}

Siin, utf8.DecodeRuneInString tagastab rune ja baitide arvu, mida see võtab. Nii saab määrata iga märgi suuruse baitides.