Flags e flags persistentes
Flags de string, int e bool e integração com Viper
Flags e flags persistentes é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Sinalizadores locais
Os sinalizadores locais se aplicam somente ao comando no qual são definidos. Use cmd.Flags():
var port int
serveCmd.Flags().IntVar(&port, "port", 8080, "HTTP server port")Sinalizadores persistentes
Os sinalizadores persistentes são herdados pelo comando e por todos os seus subcomandos. Use cmd.PersistentFlags():
var verbose bool
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose output")Sinalizadores curtos
Use as variantes *VarP para adicionar uma abreviação de uma única letra:
cmd.Flags().StringVarP(&output, "output", "o", "stdout", "Output destination")Tipos de sinalizadores
O Cobra (por meio do pflag) oferece suporte a String, Bool, Int, Int64, Float64, StringSlice, Duration, Count e outros. Cada tipo tem uma variante Var (que recebe um ponteiro) e uma variante conveniente (que retorna um ponteiro).
Sinalizadores obrigatórios
Marque um sinalizador como obrigatório — o Cobra produzirá um erro se ele não for fornecido:
cmd.MarkFlagRequired("config")Grupos de sinalizadores
Marque sinalizadores como mutuamente exclusivos ou obrigatórios em conjunto com MarkFlagsRequiredTogether e MarkFlagsMutuallyExclusive:
cmd.MarkFlagsRequiredTogether("user", "password")
cmd.MarkFlagsMutuallyExclusive("json", "yaml")Sinalizador StringSlice
Aceite vários valores como uma lista separada por vírgulas ou como sinalizadores repetidos:
var tags []string
cmd.Flags().StringSliceVar(&tags, "tags", nil, "Tags (comma-separated)")
// Usage: --tags a,b,c or --tags a --tags bVinculando sinalizadores ao Viper
Vincule um sinalizador do Cobra a uma chave do Viper para que o valor também possa vir de uma variável de ambiente ou de um arquivo de configuração:
viper.BindPFlag("port", serveCmd.Flags().Lookup("port"))
viper.BindEnv("port", "APP_PORT")Exibição do valor padrão
O Cobra mostra automaticamente o valor padrão no texto da ajuda. Forneça um padrão claro que funcione imediatamente para o caso comum.
Acessando valores de sinalizadores
Acesse os valores dos sinalizadores pelo ponteiro que você vinculou ou procure-os pelo nome no conjunto de sinalizadores do comando se o ponteiro não estiver acessível:
port, _ := cmd.Flags().GetInt("port")Método Changed
cmd.Flags().Changed("flag-name") retorna true somente se o usuário tiver definido explicitamente o sinalizador. Use-o para distinguir entre "não fornecido" e "fornecido com o valor padrão".
Verificação rápida
Qual é a diferença entre um sinalizador local e um sinalizador persistente no Cobra?
Recapitulação: sinalizadores e sinalizadores persistentes
Pontos principais:
- cmd.Flags(): local; cmd.PersistentFlags(): herdado pelos subcomandos
- *VarP para abreviações; MarkFlagRequired para sinalizadores obrigatórios
- MarkFlagsRequiredTogether / MarkFlagsMutuallyExclusive para relacionamentos
- Changed() para detectar se o usuário definiu explicitamente um sinalizador
Perguntas Frequentes
A aula “Flags e flags persistentes” é grátis?
Sim — o texto completo de “Flags e flags persistentes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Flags e flags persistentes”?
Flags de string, int e bool e integração com Viper Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Flags e flags persistentes”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos do Cobra
- Flags e flags persistentes
- Subcomandos e grupos de comandos
- Distribuindo ferramentas de CLI