Сколько байт занимает одна русская буква?

В Go строка (string) представляет собой последовательность байт в кодировке UTF-8. Чтобы определить, сколько байт занимает один символ (руна), нужно учитывать, что разные символы могут занимать разное количество байт.

Короткий ответ

Что ответить на собеседовании

В Go строка (string) представляет собой последовательность байт в кодировке UTF-8. Чтобы определить, сколько байт занимает один символ (руна), нужно учитывать, что разные символы могут занимать разное количество байт.

Подробный разбор

Ответ с пояснениями

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку