Aula 56
Como Criar um Método na Linguagem Golang - Aula de Go
Summary
# Resumo da Aula sobre Métodos na Linguagem Go
Nesta aula, continuamos o aprendizado da linguagem Go, focando na definição e implementação de métodos. Vamos abordar os principais pontos discutidos:
## Conceito de Método em Go
- Go não possui classes, mas permite definir métodos em tipos.
- Um método é uma função que inclui um receptor, que é uma instância do tipo.
- O receptor é definido entre a palavra-chave `func` e a lista de parâmetros da função.
## Exemplo Prático
1. **Definição da Estrutura**:
- Criamos uma estrutura chamada `Pessoa` com duas propriedades: `Nome` e `Sobrenome`.
```go
type Pessoa struct {
Nome string
Sobrenome string
}
-
Criação de uma Instância:
- Na função
main
, instanciamosPessoa
utilizando a estrutura literal.
alguem := Pessoa{Nome: "José", Sobrenome: "de Alencar"}
- Na função
-
Implementação do Método:
- Definimos um método
NomeCompleto
que retorna a concatenação do nome e sobrenome.
func (p Pessoa) NomeCompleto() string { return p.Nome + " " + p.Sobrenome }
- Definimos um método
-
Chamada do Método:
- Podemos chamar o método diretamente na instância.
fmt.Println(alguem.NomeCompleto())
Considerações
- O método pode acessar as propriedades do receptor por meio da variável definida (neste caso,
p
). - É importante definir o tipo de retorno na assinatura da função.
- Embora Go não utilize classes, a estrutura e métodos oferecem uma maneira eficiente de organizar código.
Conclusão
Aprendemos a criar métodos em Go e como associá-los a tipos, permitindo uma abordagem similar à orientação a objetos, mesmo sem classes. Até a próxima aula!
Video Transcript
Olá pessoal, nesta aula vamos continuar o nosso aprendizado da linguagem Go, vamos falar de métodos.
Para começar a gente falar de métodos, vamos primeiro parecer que a linguagem Go não tem classes, tá?
Mas nós podemos definir métodos nos tipos, tá?
Então, o método é somente nada mais, nada menos que uma função com uma coisa a mais, que é uma lista de argumentos que inclui o receptor.
Então, o método vai ser uma função e entre a palavra chave, funk e a lista de argumentos ou parâmetros da função, vai ter mais uma lista com parênteses.
Dentro dessa lista nós vamos ter o receptor, uma variável de receptor que a gente vai usar para poder acessar o valor daquela, como se fosse uma instância, um objeto baseado em uma certa classe, para a gente poder acessar aquela instância, tá?
Então, vamos partir para o código. Vamos supor que eu tenho essa arquivo método dos pontos Go que eu criei, já definindo o pacote main, vamos definir um tipo aqui, uma estrutura.
Vamos supor que queremos descrever os dados sobre uma certa pessoa. Vamos criar uma estrutura chamada pessoa e vamos armazenar o nome da pessoa.
Vamos dividir o nome completo entre duas variáveis, tá? Vamos usar nome para o primeiro nome e sobrenome para os nomes restantes da pessoa.
Então, vamos começar a definir esse type, tipo pessoa, uma struct, uma estrutura.
Abre as chaves. Agora vamos definir cada propriedade, temos duas. Primeira vou chamar de nome, note a primeira letra capitalizada para a gente poder acessar a propriedade.
Vamos também definir o sobrenome. Note que o nome vai ser string e o sobrenome também vai ser string.
Se você quiser, pode pôr tudo na mesma linha, assim, tá? Porque string vai ser sobrenome e o nome.
Com isso a gente tem uma estrutura para uma pessoa. Agora vamos criar uma pessoa aqui na função main.
Na função main eu vou chamar de variável de alguém, vou usar os dois pontos igual e vou definir uma pessoa usando a estrutura literal.
Pessoa tem um nome sobrenome, deixa eu dizer o nome aqui. José, o nome sobrenome vai ser dialenka, tá?
Então definimos aqui essa estrutura com a pessoa, José dialenka. José é o nome.
Dialenka é o sobrenome, ambos de tipo string. Legal, só para confirmar que não teve nenhum problema FMT.
Ela ainda aqui embaixo. Vou imprimir a estrutura alguém. Como eu estou usando FMT vamos importar aqui em cima.
Eu vou usar essa maneira aqui usando já os parênteses. Se eu quiser adicionar mais importe, só pôr lá em outra linha entre os parênteses.
Vamos agora ao terminal e ver aqui. Eu vou dar o programa métodos.go.
Deu erro aqui. Vamos ver o que é o erro. métodos.go, o arquivo na linha 8 coluna 25. Deu erro de sintaxi.
Uma vírgula inesperada. Ah, tá. Então ele espera que tenha um ponto e vírgula ou uma nova linha.
Vamos ver aqui. Deixa eu remover essa vírgula daqui, no final da linha lá. Vamos sentar novamente.
Então dá certo. José dialenka agora aparece. Então o problema era essa vírgula aqui.
Vamos ver se funciona se tivesse duas linhas dessa maneira aqui. Eu nem sei se precisa de vírgula. Vamos ver aqui.
Então nem precisa da vírgula acho nesse caso. Vamos ver. Então não precisa da vírgula naquele caso ali.
Se for uma propriedade por linha. Em qualquer caso você pode escolher se quiser túnel em uma mesma linha ou não.
Então vamos continuar aqui. Temos a estrutura pessoa, mas se a gente fosse pensar como pessoa como se fosse uma classe.
Nós poderíamos adicionar um método a essa classe pessoa para poder, por exemplo, retornar o nome completo da pessoa.
Normalmente nós definiríamos dentro da classe um método, uma função dentro da classe.
Mas como a gente faz no gol, já que não tem classe? Bem, o que a gente vai fazer é o seguinte.
A gente vai definir o método que é uma função que vai referenciar aqui. Vai ter um receptor do tipo pessoa.
Aí o gol vai automaticamente permitir chamar esse método na instância aqui, nesse caso, alguém.
Então a gente quer fazer o seguinte. A gente quer chamar alguém, ponto, por exemplo, obter nome completo.
Mas eu vou dizer só o nome completo assim, uma chamada de uma função.
Então a gente quer, queria, a gente quer fazer o seguinte, chamar um método no alguém.
Esse método aqui é chamado nome completo e vai retornar a concatenação do nome, com o sobrenome e um espaço entre eles.
Como fazer isso? Bem, aqui fora, fora da estrutura, vamos definir uma função chamada nome completo.
Agora essa função vai retornar o quê? Bem, vai retornar o nome, mais o sobrenome, com espaço entre eles.
Mas agora a gente não tem nenhuma variável para referenciar o nome e o sobrenome, porque a gente não tem a variável que nos permite acessar o alguém.
Então para poder fazer isso, entre o nome da função e a palavra chave funk, você adiciona parênteses e você passa aqui uma lista de receptor.
Nesse caso receptor, vai ser um aqui, tá? Então vou chamar esse cara aqui, pode ser qualquer nome.
Normalmente, na documentação do gol, eles usam só uma letra, mas aí depende de você.
Vou dizer letra P do tipo pessoa, tá? Então vamos definir receptor aqui chamado P.
Esse receptor é do tipo pessoa. O que é que isso vai fazer? Então ele vai pegar a estrutura pessoa, ele vai adicionar esse método chamado nome completo,
para você poder fazer o alguém com o nome completo.
Aí quando você chama o nome completo dessa maneira aqui, com um ponto seguido do nome do método que a gente definiu aqui em cima,
ele vai passar o alguém, que é essa estrutura aqui, como o valor do P aqui, sabe?
Mas note que é uma cópia do valor, tá? Não é uma referência direta.
Então vai passar um cópia aqui da pessoa, que é José de Alencar, e você pode referenciar o P ponto nome e o P ponto sobrenome dessa maneira assim.
Tá? Mas agora a gente quer, na verdade, tornar o nome seguido de um espaço, seguido de um sobrenome.
Então vamos ver no que dá. Vamos conferir aqui. Tem um preteleno, nome completo, tem um método aqui que vai ser associado a pessoa,
porque a gente tem a lista do receptor P entre a palavra chave funk e o nome da função nome completo.
Note que não temos nenhum parâmetro para a função, porque o receptor já nos permite acessar o nome e o seu sobrenome.
Com isso, vamos voltar ao terminal e testar o nosso código.
Deu ao problema aqui. Vamos ver.
O que é que eu esqueci? Ah, eu esqueci de definir o valor de retorno da função logo após a lista de parâmetros.
Então, atina a linha 13. Ele disse que tem muitos argumentos acerem retornados, ele deseja nenhum, mas estamos retornando uma string.
Então, vamos aqui. No final, aqui, depois da lista de parâmetros, vamos passar o valor, o tipo do valor retornado, que é uma string.
Essa função retorna uma string, então temos que definir aqui na assinatura da função.
Então, o retornado José de Alencar como uma string.
Tá bom?
Então, para revisar, aprende-o sobre como criar um método e associa esse método a uma certa, neste caso, estrutura, na linguagem go.
Então, go não tem classes, mas ainda podemos definir métodos nos tipos.
O método é uma função que tem algo a mais. Esse algo a mais é o receptor que a gente põe aqui entre parâmetros, depois da palavra chave func, e antes do nome da função.
Eu chamei o receptor de p nesse caso tipo pessoa, e isso vai associa a função nome completo a o tipo pessoa, que, neste caso, é uma estrutura, mas não precisa ser uma estrutura.
Então, agora, se você tiver uma instância de uma pessoa como alguém aqui, você pode chamar o nome completo nesse alguém com o ponto aqui, alguém e ponto, nome completo.
Nosso sucesso dos parâmetros, porque é um método.
Acerto?
Nosso método tem acesso a o receptor p, que é o objeto que chama a função.
Então, alguém vai aparecer aqui como o p, podemos acessar o nome e o sobrenome desse alguém que esse cara é aqui.
Um abraço a lesão 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: