> Что такое len и cap в слайсах Go и как они работают (Go)
Уровень: junior · Роль: backend · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
len и cap - это встроенные функции Go, которые возвращают длину и ёмкость слайса соответственно.
-
len(slice)- количество элементов, которые сейчас находятся в слайсе. Это число, которое вы видите при итерации или обращении по индексу. -
cap(slice)- максимальное количество элементов, которое может вместить слайс без перераспределения памяти (reallocation). Оно определяется размером базового массива, на который ссылается слайс, минус смещение от начала массива.
Как они работают:
Слайс - это структура из трёх полей: указатель на элемент массива, длина и ёмкость. len и cap просто читают эти поля. При создании слайса через make([]T, length, capacity) вы явно задаёте оба значения. Если capacity не указан, он равен length.
Пример:
GOarr := [5]int{1, 2, 3, 4, 5}s := arr[1:4] // s = [2, 3, 4]fmt.Println(len(s)) // 3 (элементы с индексами 1,2,3)fmt.Println(cap(s)) // 4 (от индекса 1 до конца массива: 4,5)
Важный нюанс: при добавлении элементов через append, если длина превышает ёмкость, Go создаёт новый массив большего размера (обычно в 2 раза), и ёмкость увеличивается. После этого cap отражает размер нового массива.
> Похожие задачи по backend
Как клиенты на разных языках используют протокол gRPC
Как сервер и клиент используют proto-файл в gRPC
Для чего нужны два экстра бита внутри бакета map Go и как они используются
Что такое rune в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью