🔠 Погружение в UTF-8Раньше ASCII поддерживал только 128 символов. UTF-8 решил эту проблему, используя 1–4 байта для кодирования символов Unicode. Go, ориентированный на современные веб-приложения, встроил поддержку UTF-8 на базовом уровне. Работа с UTF-8 в Go:В Go строки — это срезы байтов. Это значит, что функция len()покажет длину в байтах, а не количество символов. Чтобы правильно работать с UTF-8, Go предоставляет пакет unicode/utf8:import "unicode/utf8"func main() { str := "Hello, 世界" fmt.Println("Bytes:", len(str)) fmt.Println("Runes:", utf8.RuneCountInString(str))}Результат покажет, что len() выдаст 13 байтов, хотя символов всего 9. Это потому, что 世界 занимает по 3 байта каждый. Ошибки и подводные камни:Одна из распространённых ошибок — неверное предположение, что каждый символ занимает 1 байт. При обрезке строк или подсчёте символов важно использовать utf8-функции.Также стоит помнить о валидации. Функция utf8.Valid() поможет убедиться, что данные корректны:if !utf8.Valid(data) { log.Fatal("Invalid UTF-8 data")}📎 Подробнее про UTF-8 в GoБиблиотека Go разработчика