mirror of
https://github.com/jbranchaud/til
synced 2026-01-02 22:58:01 +00:00
52 lines
1004 B
Markdown
52 lines
1004 B
Markdown
# Combine Two Slices
|
|
|
|
The `append` function can be used to create a new slice with the contents of
|
|
the given slice and one or more items added to the end.
|
|
|
|
We can add one or more items like so:
|
|
|
|
```go
|
|
s1 := []int{1, 2, 3, 4}
|
|
s2 := append(s1, 5)
|
|
s3 := append(s2, 6, 7, 8)
|
|
|
|
fmt.Println(s1) //=> [1 2 3 4]
|
|
fmt.Println(s2) //=> [1 2 3 4 5]
|
|
fmt.Println(s3) //=> [1 2 3 4 5 6 7 8]
|
|
```
|
|
|
|
But what if we have a second slice instead of individual items? We could import
|
|
`slices` and use its `Concat` function. Or we can stick with `append` and
|
|
unpack that slice as a series of arguments into the second part of `append`
|
|
using `slice...`.
|
|
|
|
```go
|
|
s4 := append(s2, s1...)
|
|
fmt.Println(s4) //=> [1 2 3 4 5 1 2 3 4]
|
|
```
|
|
|
|
Here is the full example:
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func main() {
|
|
s1 := []int{1, 2, 3, 4}
|
|
s2 := append(s1, 5)
|
|
s3 := append(s2, 6, 7, 8)
|
|
|
|
fmt.Println(s1)
|
|
fmt.Println(s2)
|
|
fmt.Println(s3)
|
|
|
|
s4 := append(s2, s1...)
|
|
fmt.Println(s4)
|
|
}
|
|
```
|
|
|
|
[source](https://pkg.go.dev/builtin#append)
|