Что означает число, возвращаемое функцией len для строки

«Что означает число, возвращаемое функцией len для строки» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функция len() для строки возвращает количество байт, а не символов (рун). В UTF-8 символы могут занимать от 1 до 4 байт, поэтому результат может отличаться от ожидаемого.

Пример:

s := "Привет"
fmt.Println(len(s)) // 12, а не 6 (каждый кириллический символ — 2 байта)

Для подсчёта символов используйте utf8.RuneCountInString():

fmt.Println(utf8.RuneCountInString(s)) // 6