【Go言語】2つ(複数)のスライスを結合する方法とappend関数の使い方

Go言語で2つのスライスを連結、結合する方法を解説します。

答えをいえば、スライスを結合するにはappend関数を使用します。append関数は元のスライスの要素を含む新しいスライスを返します。

以下、Go言語で2つのスライスを結合するサンプルコードです。

package main

import "fmt"

func main() {
    a := []int{1, 2, 3}
    b := []int{4, 5, 6}
    c := append(a, b...)
    fmt.Println(c) // [1 2 3 4 5 6]
}

この例ではabのスライスをappend関数を使って連結しています。

ポイントはbスライスの後にある...の部分です。これは省略演算子で、bのスライスを個々の引数に展開して渡します。

この省略演算子がないと、append関数はbを単一の要素として扱い、入れ子になったスライスが生成されるので注意してください。

ちなみに、append関数は新しいスライスを返し元のスライスを変更しません。(非破壊的)

元のスライスのいずれかを変更する場合は、次のようにappendの結果をそのスライスに再代入することができます。

 package main

import "fmt"

func main() {
    a := []int{1, 2, 3}
    b := []int{4, 5, 6}
    a = append(a, b...) // aに再代入
    fmt.Println(a) // [1 2 3 4 5 6]
}