Sobes.tech
Назад к вопросам
Senior
6

Как организована строка под капотом в Go?

Компании, где спрашивали
I-teco

Ответ от нейросети

sobes.tech AI

В Go строка (string) — это неизменяемый срез байт, который под капотом представлен структурой с двумя полями:

  • указатель на массив байт,
  • длина строки.

То есть строка — это просто указатель на последовательность байт и её длина. Память для байтов выделяется отдельно и не копируется при передаче строки, что делает операции с ними эффективными.

Пример внутреннего представления (упрощённо):

// Внутренне string похож на:
type stringHeader struct {
    Data uintptr // указатель на байты
    Len  int     // длина строки
}

Из-за неизменяемости строк любые операции, изменяющие содержимое, создают новый массив байт и новую строку.