今回はgolangにおけるappend関数の使い方や注意点について解説していきます。
append関数とは
append関数とはスライスに要素を追加する際に用いる関数です。
スライスについては以前に以下の記事で解説しているので、先に目を通していただくと理解がより深まるかと思います。
appendは追記する、付け加えるという意味があり、その意味の通りスライスに要素を付け加えるという関数です。
append関数の使い方
実際にコードを用意したので見てみましょう。
a := []int{1, 2, 3, 4, 5}
a = append(a, 10, 20)
fmt.Println(a)
要素1,2,3,4,5というint型のスライスaがあります。こちらに新たに要素を加えていきましょう。
append()の最初の引数には追加元のスライスを渡してあげる必要があります。その後の引数は入れてあげたいint型の値を記載します。
これによりaの中身を出力するPrintln()の結果は[1 2 3 4 5 10 20]と出力され、スライスaに10,20が追加されました。
append関数の注意点
append関数は便利な関数ではありますが、いくつか注意点があります。
パフォーマンスを気にすること
appendはスライスの要素数を拡張します。
その際、スライスのキャパシティを確認し、容量を確保して要素を追加します。スライスの宣言時にキャパシティも定義できますが、それ以上の要素を追加しようとするとコストがかかります。
スライスのキャパシティについては以下の記事で解説していますので、気になる方はご覧ください。
そのためfor文などを使用してキャパシティを増やしていくのはパフォーマンス的に悪いため、事前に必要な要素数や最大量が分かっている場合make関数を使ってあらかじめキャパシティを指定するのが効率が良いといえます。
以下のように要素数が増えていくスライスを使う場合は、あらかじめ大きめのキャパシティを指定して、メモリを確保しておきましょう。
a := make([]int, 0, 100)
golangをもっと詳しくなりたい方に
golang学習のために筆者が実際に受講したUdemy教材をまとめています。
golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。