Сколько байт занимает пустая строка?

Junior
561 просмотров
AFK Offer AI

Пустая строка "" занимает 16 байт на 64-битной системе — это размер заголовка StringHeader: указатель на данные (8 байт) + длина (8 байт). Самих данных — 0 байт.

var s string = ""
fmt.Println(unsafe.Sizeof(s)) // 16

s2 := "hello" fmt.Println(unsafe.Sizeof(s2)) // 16 (всегда 16 — это размер заголовка)

unsafe.Sizeof возвращает размер заголовка, а не данных. Реальное потребление строки "hello" = 16 байт заголовка + 5 байт данных. Строки в Go неизменяемые — присваивание копирует заголовок, не данные.

Следующий вопрос

Что такое SLI?