電波ビーチ

☆(ゝω・)v

golangでsliceの要素をひとつ消したsliceが欲しい

まあこれですよね

http://or3.hatenablog.com/entry/2020/01/13/111700or3.hatenablog.com

package main

import (
    "fmt"
)

func main() {
    arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    fmt.Println(arr, len(arr), cap(arr))
    // [1 2 3 4 5 6 7 8 9 10] 10 10
    i := 3

    // l = arr[:i] + arr[i+1:] python風にかくとこう
 
    arr = append(arr[:i], arr[i+1:len(arr)]...)    // 3番目のインデックスを消したよ
    fmt.Println(arr, len(arr), cap(arr))
    // [1 2 3 5 6 7 8 9 10] 9 10
 
    arr = append(arr[:2], arr[3:len(arr)]...) // ↑からさらに2番目のインデックスを消したよ
    fmt.Println(arr, len(arr), cap(arr))
    // [1 2 5 6 7 8 9 10] 8 10

}

https://play.golang.org/p/YWUmGXi29Uk

変数を使い回すためにappendの第2引数の可変長スライスの末尾を指定しているんだけど、なんかほかに(理解と実装が)楽な方法があったらおしえてくださいだぜ


golang, 適当に趣味でやってるだけ*1 でプロダクト一切つくってないしなんか作れたらいいんだけどな、とくになんもないね

*1:それを言ったら現状プログラミング全般そうなんだけど