criando um mapa associativo em go: como copiar e limpar o original
em go, você está tentando copiar o conteúdo de um mapa chamado AMAP para outro mapa chamado ASUPERMAP. Posteriormente, você deseja limpar o AMAP para aceitar novos valores na próxima iteração do loop. No entanto, você está enfrentando a questão de limpar o mapa sem também limpar sua referência no ASUPERMAP. Isso ocorre porque o asupermap [y] mantém uma referência ao AMAP e, quando você modifica o AMAP (neste caso, excluindo um item), você está realmente modificando os dados subjacentes que o ASUPERMAP aponta para. Isso envolve a criação de um novo objeto de mapa com sua própria cópia dos dados, em vez de simplesmente manter uma referência ao mapa original.
Você pode conseguir isso criando manualmente um loop para itera o mapa original e adiciona cada par de valores-chave ao novo mapa: newmap [k] = v } Ao fazer isso, você cria um novo mapa que contém os mesmos dados que o mapa original, mas os dois mapas são objetos separados com suas próprias cópias dos dados. Para fazer isso, você pode usar a função de redefinição do pacote de contêineres/lista:
para algo: = frutas de intervalo { AMAP: = Make (map [string] Astruct) asupermap: = make (map [string] map [string] Astruct) para x: = alcance algo { AMAP [x] = adata asupermap [y] = AMAP Exclua (AMAP, X) } // cópia profunda Amap em Newmap Newmap: = make (map [string] Astruct) para k, v: = range amap { newmap [k] = v } // Limpe o AMAP original Container/list.reset (AMAP) // salvar o novo mapa SAVEASUPERMAP (NEWMAP) }
Seguindo estas etapas, você pode criar com sucesso um mapa associativo em Go, executar uma cópia profunda do mapa para preservar os dados originais e limpar o mapa original para aceitar novos valores na próxima iteração do loop.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3