Вопросы с собеседований по Go и ответы на них.
Учиться у нас: clc.to/iEeaZw
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
Наши каналы: https://t.me/proglibrary/9197
Post #1468
1.38K
❓ Что такое руны в Go
Руна (тип
Зачем это нужно: в Go строки хранятся в кодировке UTF-8, где один символ может занимать от 1 до 4 байт. Поэтому индексация строки по байтам (
Руны решают эту проблему: когда вы перебираете строку через
🐸 Библиотека Go для собеса
Руна (тип
rune) — это один символ Unicode. По сути это синоним типа int32: под капотом руна хранит числовой код символа (так называемый code point).Зачем это нужно: в Go строки хранятся в кодировке UTF-8, где один символ может занимать от 1 до 4 байт. Поэтому индексация строки по байтам (
s[i]) вернёт именно байт, а не символ — и для не-ASCII текста это будут «половинки» символа.Руны решают эту проблему: когда вы перебираете строку через
range или преобразуете её в []rune, Go корректно разбивает её на цельные символы, а не на байты.s := "Привет"
fmt.Println(len(s)) // 12 — байты
fmt.Println(len([]rune(s))) // 6 — символы
for i, r := range s {
fmt.Printf("%d: %c\n", i, r) // r имеет тип rune
}
🐸 Библиотека Go для собеса
- 👍 9






