エンジニアはこわくない

好きなように書く

【golang】スライスから特定の要素を削除する


スポンサーリンク

f:id:tsujitaku50:20170224131252j:plain

こんにちは、つじたく(@Tsuji_Taku50)です。

golangを書いている時に、「あれ、golangでスライスを削除するときどうするんだっけ?」

と思い調べたので、ここに残しておきます。

golangにスライス削除の関数はない

調べてわかったんですが、golangにはスライス削除関数というものがありません。
(golangさん用意してくださいお願いしますm(__)m)

なのでスライスの特定の要素を削除したいときは自分で削除関数を用意するしかありません。

コード量の少ないので、コピペで使用できると思います。

スライスの要素がstring型のとき

// スライスの中身削除
func remove(strings []string, search string) []string {
    result := []string{}
    for _, v := range strings {
        if v != search {
            result = append(result, v)
        }
    }
    return result
}

スライスの要素がint型のとき

// スライスの中身削除
func remove(ints []int, search int) []string {
    result := []int{}
    for _, v := range ints {
        if v != search {
            result = append(result, v)
        }
    }
    return result
}

サンプル

package main

import (
    "fmt"
)

func main() {
    list := []int{1, 2, 3, 4, 5, 6}
    remove(list, 3)
    fmt.Println(list)
        // list = [1,2,4,5,6]
}


// スライスの中身削除
func remove(ints []int, search int) []string {
    result := []int{}
    for _, v := range ints {
        if v != search {
            result = append(result, v)
        }
    }
    return result
}

まとめ

スライスを削除するための関数がないと知ったときは「えー標準で用意してください・・・」

と思いましたがわりと少ないコードで削除を実現できたので、ヨカッタです。

おわり!!