同じバッキング配列に要素を追加して新しいスライス (pathA と pathB) を作成しているため、コードで変数の上書きの問題が発生します。
Go のスライスの背景:
コードの問題:
コード内で、2 つの新しいスライスを作成しています。 pathA と pathB、追加関数を使用:
pathA := append(route, nextA) pathB := append(route, nextB)
次に何が起こります:
解決策:
この上書きを回避するには、次のことを行う必要があります。 pathA と pathB に一意のバッキング配列があることを確認してください。これを実現するには、make と copy:
newRoute := make([]int, len(route), (cap(route) 1)*2) copy(newRoute, route) if i % 2 == 0 { pathA := append(newRoute, nextA) } else { pathB := append(newRoute, nextB) }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3