Goの配列・スライスの要素から指定要素を削除する
appendで該当する要素を除く
配列・スライスをループさせて削除対象の要素を発見したら、その要素を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, "2番目")
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
}
コードを簡単に解説するとappend(s[:i], s[i+1:]...) はs[:i]は初めの要素からi-1番目までの要素を指定、s[i+1:]はi+1の番目の要素からそれ以降を指定するという構文なので、i番目の要素を一旦取り除いて2分割した配列・スライスを再度取り付けるといったことをしています。
参考文献: