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 վերադարձնում է ռունան և այն բայթների քանակը, որը նա զբաղեցնում է։ Այս կերպ, կարելի է որոշել յուրաքանչյուր նշանի չափը բայթերով։