Sobes.tech
Back to questions
Junior — Middle
76

Как определить размер в байтах, занимаемый одним символом в строке?

Answer from AI

sobes.tech 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 возвращает руну и количество байт, которое она занимает. Таким образом, можно определить размер каждого символа в байтах.