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 връща руна и броя на байтовете, които тя заема. По този начин може да се определи размерът на всеки символ в байтове.