Назад к вопросам
Junior
104
questionbank
Что представляет собой тип данных string в языке Golang?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Golang string является неизменяемой последовательностью байт.
Ключевые особенности:
- Неизменяемость: После создания строку нельзя изменить. Любая операция, модифицирующая строку, на самом деле создает новую строку.
- Представление: Строка содержит последовательность байт. По умолчанию Golang предполагает, что эти байты представляют собой UTF-8 закодированный текст.
- Длина: Длина строки (
len(s)) возвращает количество байт в строке, а не количество рун (символов). - Индексация: Доступ к элементам строки по индексу (
s[i]) возвращает байт по этому индексу. - Руны: Для работы с символами (рунами) используют итерацию по строке с помощью цикла
for range, который декодирует UTF-8 и предоставляет руны и их индексы.
Пример:
// Инициализация строки
s := "Привет, мир!" // 23 байта, 12 рун
// Длина строки (в байтах)
byteLength := len(s) // byteLength = 23
// Доступ к байту по индексу
firstByte := s[0] // firstByte = 208 (байт 'П' в UTF-8)
// Итерация по рунам
runeCount := 0
for index, runeValue := range s {
// index - индекс начала руны в строке (в байтах)
// runeValue - декодированная руна
runeCount++
}
// runeCount = 12