суббота, 12 января 2019 г.

Основы Go: добавление к срезу

Необходимость добавления новых элементов к срезу возникает часто, и Go предоставляет для этого встроенную функцию append. Документация по встроенному пакету описывает append следующим образом.

func append(s []T, vs ...T) []T

Первый параметр s для append это срез элементов типа T, а остальные - значения типа T для добавления к срезу.

Результатом append является срез, который содержит все элементы оригинального среза, а также новые значения.

Если нижележащий массив среза s слишком мал, чтобы вместить все значения, то будет создан новый массив большего размера. Результирующий срез будет ссылаться на этот новый массив.

Пример использования append:

package main

import "fmt"

func main() {
  var s []int
  printSlice(s)

  // append работает на нулевых массивах.
  s = append(s, 0)
  printSlice(s)

  // Срез растет по необходимости.
  s = append(s, 1)
  printSlice(s)

  // Мы можем добавить больше одного элемента за раз.
  s = append(s, 2, 3, 4)
  printSlice(s)
}

func printSlice(s []int) {
  fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}

Вывод:

len=0 cap=0 []
len=1 cap=2 [0]
len=2 cap=2 [0 1]
len=5 cap=8 [0 1 2 3 4]


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


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

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