W3Basic Logo

Concatenate Two or More Slices in Go

In Go, slices are a powerful and flexible data structure for storing and manipulating collections of data. In this guide, we will explore several different methods for concatenating slices in Go, including using the built-in functions append() and copy() and a for loop.


Using the append() built-in function:

In this example, ... is used to expand the second slice so it can be passed as separate arguments to the append function. The result is that the elements of slice2 are appended to the end of slice1.

If you want to concatenate more than two slices then repeat the same step by appending the elements of slice3 to slice1

package main

import "fmt"

func main() {
    // Declare the two slices
    slice1 := []int{1, 2, 3}
    slice2 := []int{4, 5, 6}
    slice3 := []int{7, 8, 9}

    // Using the append() built-in function
    fmt.Println("Original slices:", slice1, slice2, slice3)

    // concatenate two slices
    slice1 = append(slice1, slice2...)
    fmt.Println("Concatenated two slice:", slice1)

    // concatenate two or more slices
    slice1 = append(slice1, slice3...)
    fmt.Println("Concatenated three slice:", slice1)

}

Output

Original slices: [1 2 3] [4 5 6] [7 8 9]
Concatenated two slice: [1 2 3 4 5 6]
Concatenated three slice: [1 2 3 4 5 6 7 8 9]

Using the copy() built-in function:

In this example, we create a new slice concatenated with a length that is the sum of the lengths of slice1 and slice2. We then use the copy() function to copy the elements of slice1 to the beginning of the new slice and the elements of slice2 to the end of the new slice.

package main

import "fmt"

func main() {
    // Declare the two slices
    slice1 := []int{1, 2, 3}
    slice2 := []int{4, 5, 6}

    fmt.Println("Original slices:", slice1, slice2)

    // Create a new slice to store the concatenated slice
    concatenated := make([]int, len(slice1)+len(slice2))

    // Concatenate the slices using the copy function
    copy(concatenated[:len(slice1)], slice1)
    copy(concatenated[len(slice1):], slice2)
    fmt.Println("Concatenated slice:", concatenated)

}

Output

Original slices: [1 2 3] [4 5 6]
Concatenated slice: [1 2 3 4 5 6]

You can use the same approach to concatenate two or more slices as shown below.

package main

import "fmt"

func main() {
    // Declare the four slices
    slice1 := []int{1, 2, 3}
    slice2 := []int{4, 5, 6}
    slice3 := []int{7, 8, 9}
    // Create a new slice to store the concatenated slices
    concatenated := make([]int, len(slice1)+len(slice2)+len(slice3))
    // Copy the elements of slice1 to the new slice
    copy(concatenated[:len(slice1)], slice1)
    // Copy the elements of slice2 to the new slice after slice1
    copy(concatenated[len(slice1):len(slice1)+len(slice2)], slice2)
    // Copy the elements of slice3 to the new slice after slice2
    copy(concatenated[len(slice1)+len(slice2):len(slice1)+len(slice2)+len(slice3)], slice3)

    fmt.Println("Concatenated slice:", concatenated)
}

Output

Concatenated slice: [1 2 3 4 5 6 7 8 9]

Using a for loop:

In this example, we first declare four slices slice1, slice2, slice3, and slice4. Then we create a new slice concatenated with a length of 0. We then use a loop to iterate over the slices, and within the loop, we use another loop to iterate over the elements of each slice. We then use the append() function to add each element to the new slice concatenated.

package main

import "fmt"

func main() {
    // Declare the four slices
    slice1 := []int{1, 2, 3}
    slice2 := []int{4, 5, 6}
    slice3 := []int{7, 8, 9}
    slice4 := []int{10, 11, 12}

    // Create a new slice to store the concatenated slices
    concatenated := make([]int, 0)

    // Use a loop to iterate over the slices
    slices := [][]int{slice1, slice2, slice3, slice4}
    for _, s := range slices {
        for _, value := range s {
            concatenated = append(concatenated, value)
        }
    }
    fmt.Println("Concatenated slice:", concatenated)
}

Output

Concatenated slice: [1 2 3 4 5 6 7 8 9 10 11 12]

Conclusion:

Concatenating slices in Go can be done in several ways. In this article, we explored the three common methods: using the built-in functions append() and copy(), and a for loop.

© 2023 W3Basic. All rights reserved.

Follow Us: