Go でのスライス要素の操作: 位置間の項目の移動
Go では、スライス内の項目の位置を変更できます。ただし、このタスクには他のプログラミング言語と比べて少し異なるアプローチが必要です。
次のシナリオを考えてみましょう。slice というスライスがあり、インデックス 1 の項目をインデックス 4 に移動したいとします。これを実現するには、次の手順に従う必要があります:
<code class="go">slice = append(slice[:1], slice[2:]...)</code>
<code class="go">newSlice := append(slice[:4], 1)</code>
<code class="go">slice = append(newSlice, slice[4:]...)</code>
このアプローチにより、元のスライスが正しく変更されることが保証されます。元のコードでは、手順 2 で newSlice の先頭に 1 を追加するという間違いを犯し、その結果、間違った出力が発生しました。
スライス内で項目を移動するプロセスを簡略化するには、次のようなヘルパー関数の使用を検討してください。以下の関数:
<code class="go">func moveInt(array []int, srcIndex int, dstIndex int) []int { value := array[srcIndex] return insertInt(removeInt(array, srcIndex), value, dstIndex) }</code>
この関数は上記の手順をカプセル化し、変更するスライス、ソース インデックス、宛先インデックスの 3 つの引数を取ります。
この関数を利用すると、スライス内で項目を移動するコードを簡素化できます:
<code class="go">slice = moveInt(slice, 1, 4)</code>
以上がGo スライス内の位置間で要素を移動するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。