Назад к вопросам
Yadro
Middle+
4
Особенности работы со строками в Go: неизменяемость, len(), работа с Unicode/кириллицей, руны?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go строки (string) неизменяемы — после создания изменить отдельные байты нельзя. Это важно учитывать при работе с большими текстами.
Функция len() возвращает количество байт в строке, а не количество символов, что особенно важно для Unicode и кириллицы, где символы могут занимать несколько байт.
Для корректной работы с Unicode используют тип rune — это alias для int32, представляющий один Unicode-код по символу. Преобразование строки в срез рун позволяет работать с символами, а не байтами:
s := "Привет"
runes := []rune(s)
fmt.Println(len(s)) // количество байт
fmt.Println(len(runes)) // количество символов
Таким образом, для обработки кириллицы и других Unicode-символов нужно использовать руны, чтобы избежать ошибок при подсчёте длины или при индексировании.