Ответ
Для получения длины (количества элементов) слайса в Go используется встроенная функция len()
.
package main
import "fmt"
func main() {
s := []int{10, 20, 30}
fmt.Println(len(s)) // Выведет: 3
var nilSlice []int
fmt.Println(len(nilSlice)) // Выведет: 0
}
Ключевые моменты:
-
Длина (
len
) vs. Емкость (cap
):len()
— это количество элементов, которые фактически находятся в слайсе.cap()
— это емкость, то есть количество элементов, которые могут быть помещены в базовый массив слайса без нового выделения памяти. Длина не может превышать емкость (len <= cap
).
// Создаем слайс с длиной 3 и емкостью 5 s := make([]int, 3, 5) fmt.Println(len(s)) // 3 fmt.Println(cap(s)) // 5 s = append(s, 40) // Добавляем элемент fmt.Println(len(s)) // 4 fmt.Println(cap(s)) // 5 (емкость не изменилась)
-
Сложность: Вызов
len()
иcap()
имеет сложность O(1), так как эти значения хранятся в заголовке слайса и доступны напрямую. -
Nil-слайс: Для
nil
-слайса иlen()
, иcap()
вернут0
. -
Массивы: Функция
len()
также применима к массивам, но для нихlen
всегда равенcap
, так как размер массива фиксирован.