Documentação de Go

O identificador em branco (_) em Go

O papel especial do identificador em branco para descartar valores e em outras construções da linguagem Go.

Revisado em 2026-11-15

O que significa _

O identificador em branco é escrito como um sublinhado. Ele não introduz um nome que possa ser usado depois. Em uma atribuição, recebe um valor que o programa deliberadamente não vai utilizar.

Go exige que identificadores declarados sejam usados. O sublinhado oferece uma forma explícita de ignorar um valor sem criar uma variável sem uso.

for _, account := range accounts {
    fmt.Println(account.ID)
}

Verificar uma implementação de interface

Uma declaração como var _ AccountRepository = (*MemoryAccounts)(nil) pede ao compilador que verifique se *MemoryAccounts implementa AccountRepository. O identificador em branco descarta o valor declarado; a atribuição existe para fazer a verificação de tipos durante a compilação.

O conversor (*MemoryAccounts)(nil) produz um valor nulo de tipo ponteiro. A declaração não chama métodos nem cria uma instância concreta.

var _ AccountRepository = (*MemoryAccounts)(nil)

Outros usos e limites

O identificador em branco também pode ignorar resultados de funções, como value, _ := strconv.Atoi(input). Isso descarta o erro; em código de produção, só faça isso quando ignorá-lo for realmente correto.

O sublinhado não é uma variável coringa que depois pode ser lida. Cada aparição funciona como um descarte independente.

Fontes primárias