Как можно добавить элементы в слайс

Слайсы являются динамическими структурами данных, и вы можете добавлять в них элементы с помощью встроенной функции `append`. Функция `append` позволяет добавлять один или несколько элементов в конец слайса. При необходимости `append` автоматически увеличивает емкость слайса и выделяет новый массив для хранения элементов.

Использование `append` для добавления элементов в слайс

1. Добавление одного элемента

Чтобы  это сделать используйте `append` следующим образом:

```go
package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    slice = append(slice, 4) // Добавление одного элемента
    fmt.Println(slice) // [1 2 3 4]
}
```

2. Добавление нескольких элементов

Чтобы  это сделать передайте их через запятую:

```go
package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    slice = append(slice, 4, 5, 6) // Добавление нескольких элементов
    fmt.Println(slice) // [1 2 3 4 5 6]
}
```

3. Добавление элементов из другого слайса

Чтобы  это сделать используйте оператор разворачивания (`...`):

```go
package main

import "fmt"

func main() {
    slice1 := []int{1, 2, 3}
    slice2 := []int{4, 5, 6}
    slice1 = append(slice1, slice2...) // Добавление элементов из slice2 в slice1
    fmt.Println(slice1) // [1 2 3 4 5 6]
}
```

Пример динамического увеличения емкости слайса

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

```go
package main

import "fmt"

func main() {
    slice := make([]int, 0, 2) // Создаем слайс длиной 0 и емкостью 2
    fmt.Println("Initial:", slice, "Len:", len(slice), "Cap:", cap(slice))

    // Добавляем элементы
    slice = append(slice, 1)
    fmt.Println("After append 1:", slice, "Len:", len(slice), "Cap:", cap(slice))

    slice = append(slice, 2)
    fmt.Println("After append 2:", slice, "Len:", len(slice), "Cap:", cap(slice))

    slice = append(slice, 3) // Емкость увеличивается автоматически
    fmt.Println("After append 3:", slice, "Len:", len(slice), "Cap:", cap(slice))

    slice = append(slice, 4, 5, 6) // Добавляем несколько элементов
    fmt.Println("After append 4, 5, 6:", slice, "Len:", len(slice), "Cap:", cap(slice))
}
```

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

July 1, 2024, easyoffer

Примеры ответов: