Subcomandos e grupos de comandos
Crie hierarquias de CLI com vários níveis
Subcomandos e grupos de comandos é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 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.
Comandos hierárquicos
O Cobra oferece suporte a aninhamento arbitrário: raiz → subcomando → subsubcomando. Os usuários chamam app resource action, como em kubectl get pods.
Adicionando subcomandos
Crie cada subcomando como um cobra.Command separado e registre-o no comando pai:
var userCmd = &cobra.Command{Use: "user", Short: "Manage users"}
var userCreateCmd = &cobra.Command{Use: "create", Short: "Create user", RunE: createUser}
func init() {
userCmd.AddCommand(userCreateCmd)
rootCmd.AddCommand(userCmd)
}Exibição por grupos (Cobra v1.6+)
Atribua comandos a grupos de exibição na saída da ajuda para melhorar a organização:
rootCmd.AddGroup(&cobra.Group{ID: "mgmt", Title: "Management Commands"})
userCmd.GroupID = "mgmt"Aliases
Adicione aliases para que os usuários possam usar nomes curtos ou alternativos para os comandos:
var userCmd = &cobra.Command{
Use: "user",
Aliases: []string{"users", "u"},
}Comandos ocultos
Marque comandos de depuração ou internos como ocultos para que não apareçam na ajuda, mas continuem funcionando:
cmd.Hidden = trueComandos obsoletos
Marque comandos antigos como obsoletos para exibir um aviso quando forem usados:
cmd.Deprecated = "use 'new-command' instead"Ganchos anteriores e posteriores
Use PersistentPreRunE e PostRunE para a configuração e a finalização aplicadas a um comando e a todos os seus subcomandos (por exemplo, inicializar uma conexão com um banco de dados antes da execução de qualquer subcomando).
rootCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error {
return initDB()
}Desativando a ajuda para comandos folha
O Cobra adiciona help como subcomando por padrão. Desative-o se sua aplicação tiver seu próprio comando de ajuda ou se a estrutura de subcomandos ficar confusa.
rootCmd.SetHelpCommand(&cobra.Command{Hidden: true})Acessando o comando pai
Dentro de uma função Run, cmd.Parent() retorna o comando pai, o que é útil para acessar sinalizadores definidos no comando pai.
Percorrendo comandos
Use rootCmd.Commands() para iterar por todos os subcomandos registrados. Isso é útil para introspecção programática ou para gerar documentação automaticamente.
Geração de páginas de manual e Markdown
O Cobra pode gerar páginas de manual e documentação em Markdown para todos os comandos com o pacote cobra/doc:
doc.GenMarkdownTree(rootCmd, "./docs")Verificação rápida
Como disponibilizar um subcomando do Cobra com vários nomes?
Recapitulação: subcomandos e grupos
Pontos principais:
- AddCommand aninha comandos hierarquicamente
- GroupID organiza a exibição da ajuda no Cobra v1.6+
- Aliases para formas curtas; Hidden para comandos internos
- PersistentPreRunE para configuração compartilhada entre subcomandos
Perguntas Frequentes
A aula “Subcomandos e grupos de comandos” é grátis?
Sim — o texto completo de “Subcomandos e grupos de comandos” é 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 “Subcomandos e grupos de comandos”?
Crie hierarquias de CLI com vários níveis 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 3 de 4.
Quanto tempo leva a aula “Subcomandos e grupos de comandos”?
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