Проверяет знание встроенной функции len() для строк в Go и понимание работы с Unicode.
В Go строки представляют собой неизменяемые последовательности байтов, закодированные в UTF-8. Поэтому функция len() возвращает количество байтов, а не количество символов (рун). Для корректного подсчёта символов необходимо использовать пакет unicode/utf8 или преобразование в срез рун.
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
s := "Привет, мир!"
// Длина в байтах
fmt.Println(len(s)) // 21 байт
// Длина в символах (рунах)
fmt.Println(utf8.RuneCountInString(s)) // 12 символов
// Альтернативный способ
runes := []rune(s)
fmt.Println(len(runes)) // 12 символов
}len() для проверки размера строки в памяти или при работе с бинарными данными.utf8.RuneCountInString().Вывод: всегда учитывайте разницу между байтами и рунами при работе со строками в Go, особенно если строка содержит не-ASCII символы.