Middle
56
questionbank

Как устроены строки в языке программирования Go?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Строка в Go — это неизменяемая последовательность байтов.

Ключевые особенности:

  • Неизменяемость: после создания строка не может быть изменена.
  • Представление: хранится как указатель и длина. Указатель указывает на первый байт последовательности в памяти. Длина — количество байтов.
  • Кодировка: строки в Go не несут информации о кодировке. Часто используются для хранения UTF-8, но могут содержать любые байты.
  • Итерация по байтам: цикл for index, value range string при итерации по строке возвращает индекс и руну (int32), а не байт.
  • Итерация по рунам: руна представляет собой Unicode code point. Go использует UTF-8, поэтому одна руна может занимать от 1 до 4 байтов.
  • Получение подстроки: операция среза string[start:end] создает новую строку, указывающую на тот же участок памяти, но с другими границами.

Примеры:

go

Сравнение со срезом байтов ([]byte):

ХарактеристикаString[]byte
ИзменяемостьНетДа
ПредставлениеУказатель + ДлинаУказатель + Длина + Емкость
ТипВстроенный примитивныйСрез (slice)
ИспользованиеНеизменяемый текстИзменяемые данные (байты)

Преобразование между string и []byte:

go