Trilhas
/
Go
Go
/
Programa
/
Métodos
Mé

Métodos em Go

3 exercícios

Sobre Métodos

Um método é uma função com um argumento especial, o receptor. O receptor aparece na própria lista de argumentos, entre a palavra-chave func e o nome do método.

func (receiver type) MethodName(parameters) (returnTypes) {

}

Você só pode definir um método com um receptor cujo tipo esteja definido no mesmo pacote do método.

type Person struct {
	Name string
}

func (p Person) Greetings() string {
	return fmt.Sprintf("Welcome %s!", p.Name)
}

s := Person{Name: "Bronson"}
fmt.Println(s.Greetings())
// Output: Welcome Bronson!

Existem dois tipos de receptor: receptores de valor e receptores de ponteiro.

Métodos com receptor de valor operam sobre uma cópia do valor que recebem. Isso significa que qualquer modificação feita ao receptor dentro do método não é visível para quem o chamou.

Você pode declarar métodos com receptores de ponteiro para modificar o valor para o qual o receptor aponta. Essas modificações também são visíveis para quem chama o método.

type rect struct {
	width, height int
}

func (r *rect) squareIt() {
	r.height = r.width
}

r := rect{width: 10, height: 20}
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 20

r.squareIt()
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 10

Você encontra vários exemplos aqui. Dê uma olhada também neste tutorial curto sobre métodos.

Lembre-se: um método é apenas uma função com um argumento receptor.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Métodos

A prática está bloqueada

Desbloqueie mais 2 exercícios para praticar Métodos