Вопрос проверяет понимание работы со строками и рунами в Go, включая преобразование строк в срезы рун для корректной обработки Unicode.
В Go строка представляет собой неизменяемую последовательность байт, которая может содержать данные в кодировке UTF-8. Руна (rune) — это целочисленный тип (int32), представляющий один Unicode-символ. Преобразование строки в слайс рун необходимо для корректной работы с многобайтовыми символами, так как прямое индексирование строки возвращает байты, а не символы.
Для преобразования строки в слайс рун используется встроенная конструкция []rune(str). Она создает новый срез, где каждый элемент — это руна, соответствующая одному символу строки.
package main
import "fmt"
func main() {
str := "Привет, мир! 🌍"
runes := []rune(str)
fmt.Println(len(runes)) // 14 (количество символов)
fmt.Println(len(str)) // 21 (количество байт)
fmt.Printf("%c\n", runes[0]) // П
}Этот подход используется при необходимости:
Преобразование строки в слайс рун — стандартный способ обработки Unicode-текста в Go. Применяйте его, когда требуется посимвольная обработка строк с учетом многобайтовых кодировок.