Срез имеет размер (длину) и вместимость.
Размер среза - это количество элементов, которые он содержит.
Вместимость среза - это количество элементов в его нижележащем массиве, начиная с первого элемента в срезе.
Размер и вместимость среза s могут быть получены с помощью len(s) и cap(s).
Размер среза может быть увеличен путем повторной операции "срезания", при условии, что он обладает достаточной вместимостью.
package main
import "fmt"
func main() {
s := []int{2, 3, 5, 7, 11, 13}
printSlice(s)
// Срезаем срез, чтобы задать ему нулевую длину.
s = s[:0]
printSlice(s)
// Расширяем его длину.
s = s[:4]
printSlice(s)
// Удаляем два его первых значения.
s = s[2:]
printSlice(s)
}
func printSlice(s []int) {
fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}
Вывод:
len=6 cap=6 [2 3 5 7 11 13]
len=0 cap=6 []
len=4 cap=6 [2 3 5 7]
len=2 cap=4 [5 7]
Нулевые срезы
Нулевым значением среза является nil.
Длина и вместимость нулевого среза равны 0, и у него нет нижележащего массива.
package main
import "fmt"
func main() {
var s []int
fmt.Println(s, len(s), cap(s))
if s == nil {
fmt.Println("nil!")
}
}
Вывод:
[] 0 0
nil!
Читайте также:
Комментариев нет:
Отправить комментарий