Функция append

Функция append добавляет один или несколько элементов в конец слайса. Она принимает два параметра: первый параметр - это слайс, в который мы добавляем элементы, а второй и последующие параметры - это элементы, которые мы добавляем. Функция возвращает новый слайс, содержащий исходные элементы и добавленные в конце.

Синтаксис

goappend(slice, elements...)

Пример

Давайте создадим слайс из строк и добавим в него элемент "e" в конец:

gopackage main

import "fmt"

func main() {
  slice := []string{"a", "b", "c", "d"}
  res := append(slice, "e")
  fmt.Println(res)
}

Результат выполнения кода:

go[a b c d e]

Пример

Добавим несколько элементов в слайс чисел:

gopackage main

import "fmt"

func main() {
  slice := []int{1, 2, 3, 4, 5}
  res := append(slice, 6, 7, 8)
  fmt.Println(res)
}

Результат выполнения кода:

go[1 2 3 4 5 6 7 8]

Пример

Добавим в слайс другой слайс, используя оператор распаковки ...:

gopackage main

import "fmt"

func main() {
  slice1 := []string{"a", "b", "c"}
  slice2 := []string{"d", "e"}
  res := append(slice1, slice2...)
  fmt.Println(res)
}

Результат выполнения кода:

go[a b c d e]

Пример

Важно понимать, что функция append может не изменять исходный слайс, если его емкости достаточно для новых элементов. В этом случае возвращаемый слайс будет указывать на ту же память, но в общем случае следует всегда присваивать результат:

gopackage main

import "fmt"

func main() {
  slice := []int{1, 2, 3}
  slice = append(slice, 4, 5)
  fmt.Println(slice)
}

Результат выполнения кода:

go[1 2 3 4 5]

Смотрите также

  • функцию copy,
    которая копирует элементы из одного слайса в другой
  • функцию cap,
    которая возвращает емкость слайса
  • функцию slices.Concat,
    которая объединяет несколько слайсов в один
  • функцию slices.Insert,
    которая вставляет элементы в указанную позицию слайса