0Pricing
Go Academy · Aula

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 b

Vinculando 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

  1. Fundamentos do Cobra
  2. Flags e flags persistentes
  3. Subcomandos e grupos de comandos
  4. Distribuindo ferramentas de CLI
← Voltar para Go Academy