0
0

More than 3 years have passed since last update.

go lang 任意の場所に要素を追加するのロジック説明

Posted at

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を指定し上書きしてしまう。
すると、あたかも要素を追加したかのように見える。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0