"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > GO STILIDADE vs. MAPS: Por que os apêndios se comportam de maneira diferente?

GO STILIDADE vs. MAPS: Por que os apêndios se comportam de maneira diferente?

Postado em 2025-03-24
Navegar:763

Go Slices vs. Maps: Why Do Appends Behave Differently?

slice vs map: compreendendo o comportamento de referência do parâmetro

em Go, fatias e mapas representam os tipos de referência. Ao modificar um elemento em ambos os tipos, a alteração reflete em todas as fatias/mapas derivados deles. Esse comportamento de modificação compartilhado resulta da implementação de mapas baseada em ponteiro, onde as modificações feitas através de um ponteiro se aplicam ao mapa original. No exemplo de código fornecido, anexar novos elementos a um mapa (editMap) resulta nesses elementos acessíveis através do mapa original. No entanto, anexar a uma fatia (editslice) não tem efeito na fatia original. Os mapas são implementados como ponteiros para as estruturas de mapas de hash, enquanto as fatias são estruturas leves que fazem referência a uma matriz. Ao adicionar um novo elemento a um mapa, o ponteiro permanece constante, levando à visibilidade do novo elemento em todos os mapas derivados. No entanto, como o Go passa variáveis ​​por valor, quaisquer alterações feitas na cópia do cabeçalho da fatia (no parâmetro passada) não são refletidas na fatia original. Isso garantiria que as modificações feitas através de ponteiros em fatias também modificassem a fatia original. No entanto, essa abordagem é incomum em Go devido à falta de apoio ao idioma para a passagem e o trabalho com ponteiros de fatia. Em vez disso, a convenção de retornar novas fatias após a modificação é amplamente adotada.

Tutorial mais recente Mais>

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