В UTF-8 число байтов не равно числу кодовых точек, а кодовые точки не всегда равны видимым символам. Поэтому понятие «длина строки» требует уточнения.
Почему возникают нюансы с длиной строки в UTF-8?
В UTF-8 число байтов не равно числу кодовых точек, а кодовые точки не всегда равны видимым символам. Поэтому понятие «длина строки» требует уточнения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В UTF-8 число байтов не равно числу кодовых точек, а кодовые точки не всегда равны видимым символам. Поэтому понятие «длина строки» требует уточнения.
В Go len(s) считает байты, а utf8.RuneCountInString — руны. Буква с комбинируемым знаком или составной emoji может содержать несколько рун, но выглядеть одним символом. Для пользовательского ограничения по видимым символам нужны графемные кластеры; для сетевого лимита — байты.