Goの配列・スライスから指定要素を削除する方法

thumnail
2020-12-31

Goでコーディングをしていたときに、配列・スライスの要素から該当する値を削除したいという場面があり、その時書いたサンプルコードをメモとして残しておきます。

Goの配列・スライスから1番先頭の指定要素を削除する

append関数を使って次のように実装することで、配列・スライスの先頭の指定要素を削除することができます。注意点としては以下のコードだと対象物が2つ以上ある場合はindexが初めの要素しか削除されないという点です。全て削除したい場合はコードを改良してください。

package main

import (
    "fmt"
)

func main() {
    t := []string{"0番目", "1番目", "2番目", "3番目", "4番目"}
    fmt.Println(t)
    n := 2
    fmt.Printf("%d番目を削除\n", n)
    t = deleteTargetElement(t, "2e番目")
    fmt.Println(t)
}

func deleteTargetElement(s []string, target string) []string {
    for i, ele := range s {
        if ele == target {
            return append(s[:i], s[i+1:]...)
        }
    }
    return s
}

参考文献: