Как можно слить два слайса
Для слияния двух слайсов можно использовать встроенную функцию `append`. Позволяет добавлять элементы одного слайса в другой, что фактически является слиянием двух слайсов.
Слияние двух слайсов
Пример 1: Слияние с использованием `append`
```go
package main
import "fmt"
func main() {
slice1 := []int{1, 2, 3}
slice2 := []int{4, 5, 6}
// Используем оператор разворачивания `...`, чтобы добавить все элементы slice2 в slice1
mergedSlice := append(slice1, slice2...)
fmt.Println("Slice 1:", slice1) // [1 2 3]
fmt.Println("Slice 2:", slice2) // [4 5 6]
fmt.Println("Merged Slice:", mergedSlice) // [1 2 3 4 5 6]
}
```
Пояснение
Здесь:
1. Создаются два слайса `slice1` и `slice2`.
2. Используется функция `append` и оператор разворачивания `...`, чтобы добавить все элементы `slice2` в `slice1`.
3. Результатом является новый слайс `mergedSlice`, содержащий элементы из обоих исходных слайсов.
Пример 2: Слияние строковых слайсов
```go
package main
import "fmt"
func main() {
slice1 := []string{"a", "b", "c"}
slice2 := []string{"d", "e", "f"}
// Слияние строковых слайсов
mergedSlice := append(slice1, slice2...)
fmt.Println("Slice 1:", slice1) // [a b c]
fmt.Println("Slice 2:", slice2) // [d e f]
fmt.Println("Merged Slice:", mergedSlice) // [a b c d e f]
}
```
Пример с предварительным созданием результирующего слайса
Если вы заранее знаете количество элементов в результирующем слайсе, можно создать его с нужной емкостью и использовать функцию `copy` для копирования элементов, а затем добавить оставшиеся элементы с помощью `append`.
Пример 3: Использование `copy` и `append`
```go
package main
import "fmt"
func main() {
slice1 := []int{1, 2, 3}
slice2 := []int{4, 5, 6}
// Создаем результирующий слайс с нужной емкостью
mergedSlice := make([]int, len(slice1) + len(slice2))
// Копируем элементы из первого слайса
copy(mergedSlice, slice1)
// Добавляем элементы из второго слайса
copy(mergedSlice[len(slice1):], slice2)
fmt.Println("Slice 1:", slice1) // [1 2 3]
fmt.Println("Slice 2:", slice2) // [4 5 6]
fmt.Println("Merged Slice:", mergedSlice) // [1 2 3 4 5 6]
}
```
Слияние двух слайсов осуществляется с использованием функции `append` и оператора разворачивания `...`. Это позволяет объединить элементы двух слайсов в один. В случае, когда заранее известен размер результирующего слайса, можно использовать функцию `copy` для более эффективного копирования элементов.
July 1, 2024, easyoffer