참조 문제
pseudo 코드는 delete (Amap, x)를 사용하여 AMAP에서 항목을 삭제할 때 해당 항목에 대한 참조가 제거되었음을 보여줍니다. AsuperMap [Y]는 AMAP에 대한 참조를 보유하고 있으며 AMAP를 수정할 때 (이 경우 항목을 삭제하여) 실제로 AsuperMap을 가리키는 기본 데이터를 수정하고 있습니다. 여기에는 원래 맵에 대한 참조를 보유하는 대신 자체 데이터 사본이있는 새 맵 객체를 작성하는 것이 포함됩니다.
원래 맵 위에 반복하는 루프를 수동으로 만들고 새 맵에 각 키 값 쌍을 추가하여 다음을 달성 할 수 있습니다. NewMap [k] = v } 이 작업을 수행함으로써 원래 맵과 동일한 데이터를 포함하는 새 맵을 만듭니다. 그러나 두 맵은 자체 데이터 사본이있는 별도의 개체입니다. 이렇게하려면 컨테이너/목록 패키지에서 재설정 기능을 사용할 수 있습니다.
amap : = make (map [String] astruct) asupermap : = make (map [String] map [String] astruct) x : = 범위 {{ amap [x] = Adata ASUPERMAP [y] = AMAP 삭제 (amap, x) } // 딥 카피를 NewMap에 넣습니다 newmap : = make (map [String] astruct) K, V : = 범위 amap { NewMap [k] = v } // 원래 앰프를 지우십시오 컨테이너/list.reset (AMAP) // 새 맵을 저장합니다 SaveasuperMap (NewMap) }
이 단계를 따르면 GO에서 연관 맵을 성공적으로 만들고, 맵의 깊은 사본을 수행하여 원래 데이터를 보존하고 다음 루프 반복에서 새 값을 수락하기 위해 원본 맵을 지우십시오.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3