Aula 20 – Tutorial Golang – Métodos
Aula 20 – Tutorial Golang – Métodos
Página principal do blog
Todas as aulas desse curso
Aula 19 Aula 21
Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook
Esse é o link do código fluente no Pinterest
Meus links de afiliados:
Hostinger
Digital Ocean
One.com
Melhore seu NETWORKING
https://digitalinnovation.one/
Participe de comunidades de desenvolvedores:
Fiquem a vontade para me adicionar ao linkedin.
E também para me seguir no https://github.com/toticavalcanti.
Código final da aula:
https://github.com/toticavalcanti
Toti:
https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA
Backing track / Play-along:
https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA
Código Fluente
https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w
Putz!
https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw
PIX para doações
Se quiser copiar o código do PIX:
00020126580014BR.GOV.BCB.PIX013643c5f950-535b-4658-b91f-1f1d135fe4105204000053039865802BR5925Antonio Cavalcante de Pau6009SAO PAULO61080540900062070503***6304946B
Aula 20 – Tutorial Golang – Métodos
Métodos
Go suporta métodos definidos em structs.
type rect struct {
width, height int
}
Este método de area() tem um tipo de receptor *rect, ou seja, um ponteiro para uma estrutura rect, de retângulo.
func (r *rect) area() int {
return r.width * r.height
}
Os métodos podem ser definidos para tipos de ponteiro ou cópia de valor.
Aqui um exemplo de um receptor por cópia de valor.
func (r rect) perim() int {
return 2*r.width + 2*r.height
}
Já dentro da main(), definimos as medidas de largura e altura, e chamamos os 2 métodos definidos para nossa struct.
r := rect{width: 10, height: 5}
fmt.Println("Área: ", r.area())
fmt.Println("Perímetro: ", r.perim())
Go lida automaticamente com a conversão entre valores e ponteiros para chamadas de método.
Você pode querer usar um tipo de receptor de ponteiro para evitar a cópia em chamadas de método ou para permitir que o método altere a estrutura de recebimento.
rp := &r
fmt.Println("Área: ", rp.area())
fmt.Println("Perímetro: ", rp.perim())
Código completo
package main
import "fmt"
type rect struct {
width, height int
}
func (r *rect) area() int {
fmt.Printf("Endereço de r dentro do método area: %p\n", r)
return r.width * r.height
}
func (r rect) perim() int {
fmt.Printf("Endereço de r dentro do método perim: %p\n", &r)
return 2*r.width + 2*r.height
}
func main() {
r := rect{width: 10, height: 5}
fmt.Printf("Endereço de r dentro do método main: %p\n", &r)
fmt.Println("Área: ", r.area())
fmt.Println("Perímetro :", r.perim())
rp := &r
fmt.Println("Área: ", rp.area())
fmt.Println("Perímetro: ", rp.perim())
}
E pra executar é só entrar na pasta onde tá o arquivo methods.go
go run methods.go
Saída:
area: 50
perim: 30
area: 50
perim: 30
É isso pessoal, fico por aqui.
Nos vemos na próxima aula, até mais. 🙂
Página principal do blog
Todas as aulas desse curso
Aula 19 Aula 21
página do Código Fluente no
Facebook
Esse é o link do código fluente no Pinterest
Meus links de afiliados:
Hostinger
Digital Ocean
One.com
Obrigado e bons estudos. 😉
Category: Algoritmo - Linguagem de Programação, Go