この場合、問題は Go でスライスがどのように機能するかを理解することにあります。スライスは、配列へのポインターとその長さと容量で構成されます。要素をスライスに追加するとき、スライスを拡張すると基礎となる配列の容量を超えるかどうかが最初にチェックされます。その場合、より大きな配列が割り当てられ、既存の要素がそこにコピーされ、容量が更新されます。次に、新しい要素が配列の末尾に追加され、長さが更新されます。
コードには次の行があります。
<code class="go">pathA := append(route, nextA) pathB := append(route, nextB)</code>
ここには 2 つの可能性があります。 :
最初のケースは最初のループ反復では true であり、その後 2 番目のケースが発生するようです。この問題は、copy() と make() を使用してこれらのパスのいずれかのコピーを手動で作成することで解決できます。
以上がスライスの誤解により Go 変数が上書きされていませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。