blank page

プログラミングなどについて書きます

Goのスライスの要素の削除について

Golangにスライスの要素を削除する関数がない

Goを書いているときにスライスの要素を消してやりたいぜ…みたいな感じで使いたくなり調べてみたら,Goにはスライスの要素を削除する関数がないということでした(ぱっと調べた感じ)

なので,簡単に実装してみました.

Hoge

index番号を指定して値を消すやつ(Pythonのpopてきな)

package main

import "fmt"

func pop(slice []int, search int) []int {
    result := []int{}
 
    for i, s := range slice {
        if i != search - 1 {
            result = append(result, s)
        }
    }
    return result
}

func main() {
    list := []int{0, 12, 3, 7, 5, 9}
    fmt.Println(list)

    list = pop(list, 2)
    fmt.Println(list)
}

Poyo

値を指定するとその値を消してくれるやつ(Pythonのremoveてきな)

指定した値がスライスに二つ以上ある場合はそいつらも消えます.

package main

import (
    "fmt"
)

func remove(slice []int, search int) []int {
    result := []int{}

    for _, v := range slice {
        if v != search {
            result = append(result, v)
        }
    }
    return result
}

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

動かないとかここおかしいとかこうしたほうがいいよとか関数ありますとかあったら教えてくれるとうれしいです.