Documentação de Go

Métodos e tipos em Go

Entenda declarações de tipos, structs, funções e métodos com receiver na linguagem Go.

Revisado em 2026-11-15

Declarar um tipo struct

Uma declaração type dá nome a um tipo. Um struct agrupa campos nomeados; cada campo tem seu próprio tipo. Structs são valores, e variáveis podem guardar uma struct diretamente ou por meio de um ponteiro.

type Account struct {
    ID      string
    Balance int64
}

Associar um método ao tipo

Um método é uma função declarada com um receiver. O receiver identifica o valor ao qual o método pertence. Com receiver ponteiro, o método pode modificar o valor apontado.

O nome e a assinatura dos métodos de um tipo compõem seu conjunto de métodos e determinam quais interfaces ele satisfaz.

func (a *Account) Withdraw(amount int64) error {
    a.Balance -= amount
    return nil
}

Devolver erros explicitamente

Go normalmente comunica falhas por um valor de tipo error retornado pela função. Quem chama verifica esse valor, em geral comparando-o com nil, e decide como tratar a falha.

if err := account.Withdraw(100); err != nil {
    return err
}

Fontes primárias