Junior — Middle
Qator ichidagi bitta belgi tomonidan egallangan bayt hajmini qanday aniqlash mumkin?
sobes.tech AI
AIdan javob
Go tilida, satr (string) UTF-8 kodlashida baytlar ketma-ketligini ifodalaydi. Bir belgi (runa) qancha bayt olishini aniqlash uchun, turli belgilar turli miqdordagi baytlarni olishi mumkinligini hisobga olish kerak.
Agar ma'lum bir belgi qanchalik bayt olishini bilmoqchi bo'lsangiz, satrni []rune bo'lakka aylantirib, asl satr uzunligini rune bo'lagi uzunligi bilan solishtirishingiz mumkin.
Misol:
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("Belgi: %c %d bayt\n", r, width)
w = width
}
}
Bu yerda, utf8.DecodeRuneInString runa va uning egallagan baytlar sonini qaytaradi. Shu tarzda, har bir belgi qanchalik bayt olishini aniqlash mumkin.