Um momento
Aula 57
Cursos / Aprenda Go / Golang (Curso de Programação)
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: