概要
よく忘れるのでここにメモ。基本的な事なんですが
2つのスライスを結合する際の
newSlice := append(sli1, sli2...)
という記法をよく忘れてしまいます。。。
サンプル
package slices import ( "github.com/devlights/gomy/output" ) // Concat -- 2つのスライスの結合に関するサンプルです. func Concat() error { // ------------------------------------------------------------- // スライスの結合 // // (1) for ループで回して結合スライス作る // (2) append で結合スライス作る // ------------------------------------------------------------- var ( sli1 = []int{1, 2, 3, 4, 5} sli2 = []int{6, 7, 8} ) // (1) sli3 := make([]int, 0, len(sli1)+len(sli2)) for _, s := range [][]int{sli1, sli2} { for _, v := range s { sli3 = append(sli3, v) } } output.Stdoutl("[sli1]", sli1) output.Stdoutl("[sli2]", sli2) output.Stdoutl("[sli3]", sli3) output.StdoutHr() // (2) sli4 := make([]int, 0, len(sli1)+len(sli2)) sli4 = append(sli1, sli2...) output.Stdoutl("[sli1]", sli1) output.Stdoutl("[sli2]", sli2) output.Stdoutl("[sli4]", sli4) output.StdoutHr() return nil }
try-golang/slice_concat.go at master · devlights/try-golang · GitHub
実行すると以下のようになります。
$ make run ENTER EXAMPLE NAME: slice_concat [Name] "slice_concat" [sli1] [1 2 3 4 5] [sli2] [6 7 8] [sli3] [1 2 3 4 5 6 7 8] -------------------------------------------------- [sli1] [1 2 3 4 5] [sli2] [6 7 8] [sli4] [1 2 3 4 5 6 7 8] -------------------------------------------------- [Elapsed] 4.001ms
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場