Bjarne Stroustrup introduziu a semântica de movimento em C 11 para otimizar a transferência de dados, eliminando cópias desnecessárias. Essa técnica é particularmente útil ao lidar com grandes estruturas de dados.
Ao contrário de C , Golang não oferece suporte explícito à semântica de movimentação da mesma maneira. No entanto, Go emprega uma abordagem única que alcança resultados semelhantes por meio de seus tipos de referência integrados.
Go mantém o princípio de passar tudo por valor, incluindo tipos de referência. Os tipos de referência são tipos Go integrados que contêm referências internamente para estruturas de dados separadas. Os cinco tipos de referência integrados são:
Quando você passa ou atribui um tipo de referência, apenas a referência (ponteiro) é copiada, não os dados subjacentes. Isso é conhecido como semântica de referência.
No Go, você pode criar seu próprio tipo de referência incorporando um ponteiro para uma estrutura de dados mais complexa em sua definição de tipo personalizado. Por exemplo:
type MyMap struct { impl *map[int]string }
Agora, quando você cria uma instância de MyMap e a atribui a outra variável, apenas o ponteiro para o mapa subjacente é copiado.
Enquanto Go não implementar diretamente a semântica de movimentação no estilo C, seus tipos de referência fornecem benefícios de desempenho semelhantes, permitindo evitar cópias desnecessárias de grandes estruturas de dados. Ao compreender o conceito de semântica de referência, você pode otimizar seu código Go e melhorar seu desempenho.
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