Необходимость добавления новых элементов к срезу возникает часто, и 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]
Читайте также:
- Основы языка Go: создание среза с помощью make
- Основы языка Go: срезы (slices)
- Основы языка Go: размер и вместимость среза
Комментариев нет:
Отправить комментарий