Sobes.tech
Middle+
34

Go тілінде жолдармен жұмыс істеу ерекшеліктері: өзгермейтіндік, len(), Unicode/кириллица, руна?

Сұралған компаниялар
YadroYadro

AI-дан жауап

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-символов нужно использовать руны, чтобы избежать ошибок при подсчёте длины или при индексировании.