O Identificador em Branco `_`
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 55 de 68.
Às vezes você precisa importar um pacote não para usar suas funções ou variáveis exportadas, mas para disparar seus efeitos colaterais. O efeito colateral mais comum é a execução da função init do pacote, que é executada automaticamente quando o pacote é importado.
O Go fornece o identificador em branco _ para este propósito. Quando você importa um pacote com o identificador em branco, o Go importa o pacote e executa qualquer código de inicialização, mas não exige que você use nenhum de seus identificadores exportados.
import _ "database/sql/driver"Isso é particularmente útil quando você precisa que um pacote se registre em outro sistema ou execute tarefas de configuração, mas você não chama diretamente nenhuma de suas funções em seu código. Sem o identificador em branco, o Go daria um erro de compilação por importar um pacote não utilizado.
O identificador em branco diz ao Go: "Importe este pacote por seus efeitos colaterais, mas não o referenciarei diretamente no meu código." Isso mantém seus imports limpos enquanto ainda obtém o comportamento de inicialização que você precisa.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Folha de consulta
Use o identificador em branco _ para importar pacotes por seus efeitos colaterais sem usar suas funções exportadas:
import _ "database/sql/driver"Isso importa o pacote e executa seu código de inicialização sem exigir que você use nenhum de seus identificadores exportados. Útil quando os pacotes precisam se registrar em outros sistemas ou realizar tarefas de configuração.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos6Go Idiomático: Conjuntos
O Idioma de Conjuntos em GoCriando um ConjuntoAdicionando a um ConjuntoVerificando a Existência de ElementosRemovendo de um ConjuntoIterando sobre um ConjuntoRecapitulação - Nomes de Usuário Únicos9Pacotes e Escopo
O que é um Pacote?Exportado vs Não ExportadoCriando um Pacote SimplesAliasing de PacotesO Identificador em Branco `_` A função `init`Recapitulação - Construindo um Utilitário