Aula 57
Comparação de Método e Função sem Receptor - Aula de Go
Summary
# Aula de Go: Métodos vs Funções
Estamos de volta com mais uma aula de Go, onde continuaremos nosso aprendizado sobre métodos na linguagem Go.
## Revisão
Anteriormente, criamos a estrutura `Pessoa`, que contém duas propriedades: `nome` e `sobrenome`, ambas do tipo `String`. Definimos o método chamado `NomeCompleto`, que possui o receptor `P`, permitindo acessar o nome e o sobrenome da pessoa através desse receptor.
Criamos uma instância chamada `alguém`, que armazena uma estrutura literal com o nome "José" e o sobrenome "Alencar".
## Comparação: Método vs Função
Vamos entender como funcionaria se não utilizássemos um método, mas apenas uma função sem receptor. Iremos criar uma nova função também chamada `NomeCompleto`, que retornará uma `string`.
### Acesso às Propriedades
Para acessar os dados da pessoa:
- No método, usamos o receptor `P`, como em `P.nome` e `P.sobrenome`.
- Na função, precisamos passar a estrutura `Pessoa` como argumento.
### Sintaxe
- **Método**:
```go
func (p Pessoa) NomeCompleto() string {
return p.nome + " " + p.sobrenome
}
- Função:
func NomeCompleto(p Pessoa) string { return p.nome + " " + p.sobrenome }
Nota importante: No método, não há parâmetros na lista; o receptor P
é usado diretamente. Na função, temos p
como argumento.
Teste
Vamos testar ambos os métodos rodando go run
e verificando a saída. Os resultados devem ser os mesmos, demonstrando a diferença entre o uso de um método com receptor e uma função que requer a passagem de uma instância como argumento.
Conclusão
Esta aula fornece uma visão clara sobre como implementar métodos em Go e as diferenças entre métodos e funções convencionais.
Até a próxima aula!
Video Transcript
Estamos de volta com mais uma aula de Go.
Vamos continuar o nosso aprendizado de métodos na linguagem Go.
Então anteriormente criamos a estrutura chamada Pessoa,
que tem duas propriedades nome e sobrenome.
Ambas propriedades são do tipo String.
Definimos esse método chamado NomeCompleted.
Tem o receptor P.
Podemos acessar o nome e sobrenome da pessoa através do receptor P.
Definimos um instância que alguém variava que armazena uma estrutura literal
com o nome José e sobrenome de Alencar.
Vamos ver qual é o equivalente se a gente não tivesse método,
mas somente uma função sem receptor.
Como é que isso funcionaria? Só para a gente comparar.
Vamos criar uma nova função.
Vou chamar de função NomeCompleted.
Essa função vai tornar uma string também.
Mas como a gente vai acessar a pessoa?
Nesse caso, a gente teria que passar como argumento essa função a pessoa, Pessoa.
Da mesma maneira que o método, a gente diria P.nome, seguido do espaço,
sobrenome, seguida de P.sobrenome.
Mais notes e diferença aqui, que aqui temos na lista de parâmetros a função
a estrutura P, variável P.
Nesse outro aqui, temos nada na lista de parâmetros, mas temos uma lista de receptor.
Esse vai ser o receptor P.
Com isso, cada instância da variável da pessoa vai ter acesso a um nome completo.
Nesse caso, para a função NomeCompleted, não vai ter isso.
Então, se você comparar aqui embaixo, tem que fazer da seguinte maneira.
A gente é além e não pode mais falar alguém em ponto.
É que passar alguém como argumento para a função NomeCompleted assim.
Note a diferença aqui.
Não tem uma instância chamando uma função, mas tem uma função e a instância é passada como argumento para essa função
e aparece aqui.
Então, é diferente.
Mas note que o método, na verdade, é uma função, embora que a função, essa aqui, por exemplo,
não seja necessariamente um método, mas uma função pode ser um método da maneira que se você adicionar a lista de resseptores.
Vamos testar isso para ver se não deu meu problema.
Eu vou rodar a GoRun, método os dois, e ponto Go.
Amos imprimidos de LNK está correto.
Só para você entender a diferença, de como fazer um método versus com uma pareceria,
se fosse só uma função sem o uso do receptor.
Está certo? Então, por essa aula é só.
E até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: