Назад к вопросам
Senior
6
Как организована строка под капотом в Go?
Компании, где спрашивали
I-teco
Ответ от нейросети
sobes.tech AI
В Go строка (string) — это неизменяемый срез байт, который под капотом представлен структурой с двумя полями:
- указатель на массив байт,
- длина строки.
То есть строка — это просто указатель на последовательность байт и её длина. Память для байтов выделяется отдельно и не копируется при передаче строки, что делает операции с ними эффективными.
Пример внутреннего представления (упрощённо):
// Внутренне string похож на:
type stringHeader struct {
Data uintptr // указатель на байты
Len int // длина строки
}
Из-за неизменяемости строк любые операции, изменяющие содержимое, создают новый массив байт и новую строку.