Junior — Middle
Чӣ тавр муайян кардан мумкин аст андозаи байт, ки як рамз дар сатр мегирад?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, сатр (string) як пайвандии байтҳо дар рамзи UTF-8 мебошад. Барои муайян кардани он, ки як рамз (руна) чанд байтро мегирад, бояд ба назар гирифт, ки рамзҳои гуногун метавонанд дар баробари байтҳои гуногун бошанд.
Агар хоҳед, ки андозаи рамзи муайянро дар байтҳо бидонед, метавонед сатрро ба як порсияи рунаҳо ([]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 руна ва шумораи байтҳоро, ки он мегирад, бармегардонад. Бо ҳамин роҳ, андозаи ҳар як рамз дар байтҳо муайян карда мешавад.