を作成するGo:go:goでは、Amapと呼ばれるマップの内容をコピーしてAsupermapという名前の別のマップにコピーしようとしています。その後、次のループイテレーションで新しい値を受け入れるためにAMAPをクリアしたいと考えています。ただし、AsuperMapでの参照をクリアせずにマップをクリアする問題に直面しています。これは、ASUPERMAP [Y]がAMAPへの参照を保持し、AMAPを変更すると(この場合、アイテムを削除することによって)、AsuperMapが指す基礎データを実際に変更しているためです。これには、元のマップへの参照を単に保持するのではなく、独自のデータのコピーを含む新しいマップオブジェクトを作成することが含まれます。 newMap [k] = v }
これを行うことにより、元のマップと同じデータを含む新しいマップを作成しますが、2つのマップは独自のデータのコピーを含む個別のオブジェクトです。これを行うには、コンテナ/リストパッケージからリセット機能を使用できます。 AMAP:= make(map [string] astruct) asuperMap:= make(map [string] map [string] astruct) x:=範囲何か{ Amap [x] = adata asuperMap [y] = amap 削除(amap、x) } // newMapにAMAPをディープコピーします newMap:= make(map [string] astruct) k、v:= range amap { newMap [k] = v } //元のAMAPをクリアします container/list.reset(amap) //新しいマップを保存します saveasupermap(newmap) }これらの手順に従って、GOで連想マップを正常に作成し、元のデータを保存するためにマップの深いコピーを実行し、次のループ反復の新しい値を受け入れるために元のマップをクリアできます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3