https://qiita.com/egnr-in-6matroom/items/282aa2fd117aab9469bd
こちらの記事の
pos := 追加する位置
// slice , slice[pos] = append(slice[:pos+1], slice[pos:]...), 追加する要素
slice = append(slice[:pos+1], slice[pos:]...)
slice[pos] = 追加する要素
このロジックがようわからんかったので軽く解説。
slice = [0 ,1 ,2 ,3 ]
2まで取得 |--------| => [0,1,2]
2から取得 |-----| => [2,3]
//appendの第一引数でsliceの[0,1,2]を取得
//appendの第二引数でsliceの[2,3]を取得
//それらをsliceに代入 or 再定義する。
//すると、slice = [0,1,2,2,3]のsliceが出来上がる
//slice[pos]でpos番号のものを上書きする。
例)
posに2を指定する
第一引数 : sliceの番号2までを取得[0,1,2]
第二引数 : sliceの番号2以降を取得[2,3]
sliceは[0, 1, 2, 2, 3]
↑
posは2なのでslice番号2を指定し上書きしてしまう。
すると、あたかも要素を追加したかのように見える。