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