В языке Go строки представлены типом string, который является неизменяемой последовательностью байтов, обычно в кодировке UTF-8. Это значит, что строка — это срез байтов, а не символов.
Что такое строки в Go, какие у них особенности?
В языке Go строки представлены типом string, который является неизменяемой последовательностью байтов, обычно в кодировке UTF-8. Это значит, что строка — это срез байтов, а не символов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В языке Go строки представлены типом string, который является неизменяемой последовательностью байтов, обычно в кодировке UTF-8. Это значит, что строка — это срез байтов, а не символов.
Руны (rune) — это тип, представляющий Unicode кодовую точку (int32). Для работы с символами Unicode в строке используется преобразование строки в срез рун, что позволяет корректно обрабатывать многобайтовые символы.
Пример:
s := "Привет"
for i, r := range s {
fmt.Printf("%d: %c\n", i, r) // i — индекс байта, r — руна (символ)
}
runes := []rune(s) // преобразование строки в срез рун
fmt.Println(runes[0]) // первый символ как руна
Таким образом, строки в Go — это байтовые последовательности, а руны — отдельные символы Unicode, что позволяет работать с многоязычными текстами корректно.