いろいろ備忘録日記

主に .NET とか Go とか Python絡みのメモを公開しています。

Goメモ-87 (2つのスライスを結合する, slice concatenate)

概要

よく忘れるのでここにメモ。基本的な事なんですが

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

過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com