Назад к вопросам
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