Sobes.tech
Junior — Middle

Ինչպե՞ս որոշել չափը բայթներով, որը մեկ նիշը զբաղեցնում է տողում։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում, տողը (string) ներկայացնում է UTF-8 կոդավորմամբ բայթների հաջորդականություն։ Որոշելու համար, թե մեկ նշան (Rune) քանի բայթ է զբաղեցնում, պետք է հաշվի առնել, որ տարբեր նշաններ կարող են զբաղեցնել տարբեր թվով բայթներ։

Եթե ցանկանում եք իմանալ կոնկրետ նշանի չափը բայթերով, կարող եք տողը փոխարկել ռուների սլայսի ([]rune) և համեմատել սկզբնական տողի երկարությունը ռուների սլայսի երկարության հետ։

Օրինակ՝

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("Նշան: %c զբաղեցնում է %d բայթ\n", r, width)
        w = width
    }
}

Այստեղ, utf8.DecodeRuneInString վերադարձնում է ռունան և այն բայթների քանակը, որը նա զբաղեցնում է։ Այս կերպ, կարելի է որոշել յուրաքանչյուր նշանի չափը բայթերով։