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.

Página principal do blog

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. ;)