Sobes.tech
Junior — Middle

Kaip nustatyti vieno simbolio dydį baitais eilutėje?

sobes.tech AI

Atsakymas iš AI

Go kalboje, eilutė (string) yra UTF-8 koduotės baitų seka. Norint nustatyti, kiek baitų užima vienas simbolis (runa), reikia atsižvelgti, kad skirtingi simboliai gali užimti skirtingą baitų kiekį.

Jei norite sužinoti konkretaus simbolio dydį baitais, galite konvertuoti eilutę į rune masyvą ([]rune) ir palyginti pradinės eilutės ilgį su rune masyvo ilgiu.

Pavyzdys:

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("Simbolis: %c užima %d baitų\n", r, width)
        w = width
    }
}

Čia, utf8.DecodeRuneInString grąžina rune ir kiek baitų ji užima. Taip galima nustatyti kiekvieno simbolio dydį baitais.