Escolhendo Recebedores
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 9 de 68.
Agora que você entende tanto os receivers de valor quanto os de ponteiro, a pergunta fundamental é: quando você deve usar cada um? A decisão resume-se ao que seu método precisa fazer com o receiver.
Use um receptor de ponteiro quando seu método precisar modificar a struct original. Como os receptores de ponteiro trabalham com a instância real da struct, quaisquer alterações feitas dentro do método persistirão após o retorno do método. Isso é essencial para métodos que atualizam campos, alteram o estado ou realizam operações que devem afetar os dados originais.
Use um receptor de valor quando seu método precisar apenas ler dados da struct sem alterá-los. Receptores de valor trabalham com uma cópia, por isso são perfeitos para métodos que calculam valores, formatam a saída ou realizam qualquer operação que não exija a modificação da struct original. Eles também oferecem segurança ao garantir que os dados originais permaneçam inalterados.
Como regra geral: se o seu método altera a struct, use um pointer receiver. Se o seu método apenas lê da struct, use um value receiver. Essa abordagem torna claras as intenções do seu código e ajuda a prevenir modificações não intencionais nos seus dados.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Folha de consulta
Use um receptor de ponteiro (pointer receiver) quando seu método precisar modificar a struct original:
- As alterações feitas dentro do método persistirão após o retorno do método
- Essencial para métodos que atualizam campos ou alteram o estado
Use um receptor de valor (value receiver) quando seu método precisar apenas ler dados da struct:
- Trabalha com uma cópia, portanto os dados originais permanecem inalterados
- Perfeito para métodos que calculam valores ou formatam a saída
- Oferece segurança ao garantir que não ocorram modificações indesejadas
Regra geral: Se o seu método altera a struct, use um receptor de ponteiro. Se o seu método apenas lê da struct, use um receptor de valor.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos