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.