четверг, 10 января 2019 г.

Основы Go: размер и вместимость среза

Срез имеет размер (длину) и вместимость.

Размер среза - это количество элементов, которые он содержит.

Вместимость среза - это количество элементов в его нижележащем массиве, начиная с первого элемента в срезе.

Размер и вместимость среза 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!


Читайте также:


Комментариев нет:

Отправить комментарий