0Pricing
Go Academy · Lezione

Fondamenti di Cobra

Comando radice, Run, Args e generazione dell'help

Fondamenti di Cobra è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Che cos'è Cobra?

Cobra è la libreria Go più diffusa per creare applicazioni CLI. Fornisce comandi, flag, sottocomandi, generazione della guida, completamento della shell e convalida degli argomenti.

Installare Cobra

Aggiunga cobra come dipendenza e, facoltativamente, utilizzi il generatore CLI:

go get github.com/spf13/cobra
// Optional: cobra-cli for scaffolding
go install github.com/spf13/cobra-cli@latest
cobra-cli init myapp

Comando radice

Ogni applicazione Cobra ha un comando radice. Lo definisca con Use, una descrizione Short e una funzione Run:

var rootCmd = &cobra.Command{
    Use:   "myapp",
    Short: "My awesome CLI",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("Hello from root!")
    },
}
func main() { rootCmd.Execute() }

Struttura cobra.Command

Campi principali: Use (nome del comando + sintesi), Short (descrizione su una riga), Long (guida dettagliata), Run (esegue il comando), RunE (restituisce un errore).

RunE per propagare gli errori

Utilizzi RunE invece di Run per restituire gli errori. Cobra stampa automaticamente l'errore e termina con un codice diverso da zero.

var rootCmd = &cobra.Command{
    RunE: func(cmd *cobra.Command, args []string) error {
        return doWork()
    },
}

Aggiungere sottocomandi

Crei i sottocomandi come valori cobra.Command separati e li aggiunga alla radice con AddCommand:

var serveCmd = &cobra.Command{
    Use:   "serve",
    Short: "Start the server",
    RunE:  runServe,
}
func init() { rootCmd.AddCommand(serveCmd) }

Struttura del progetto Cobra

Struttura convenzionale: una directory cmd/ con un file per ogni sottocomando, oltre a root.go. main.go chiama solo cmd.Execute().

cmd/
  root.go    // rootCmd definition
  serve.go   // serveCmd
  migrate.go // migrateCmd
main.go

Convalida degli argomenti

Utilizzi i validatori integrati come cobra.ExactArgs e MinimumNArgs oppure una ValidArgsFunction personalizzata:

var cmd = &cobra.Command{
    Args: cobra.ExactArgs(2),
    RunE: func(cmd *cobra.Command, args []string) error {
        fmt.Println(args[0], args[1])
        return nil
    },
}

Guida generata automaticamente

Cobra genera automaticamente --help / -h per ogni comando e un sottocomando help. Il testo deriva da Use, Short, Long e dai flag.

Completamento della shell

Cobra genera immediatamente script di completamento per bash, zsh, fish e PowerShell tramite rootCmd.GenBashCompletion o il sottocomando integrato completion.

Integrazione con Viper

Combini Cobra con Viper per gestire la configurazione: i flag definiti con Cobra vengono associati alle chiavi di Viper, così i valori possono provenire dai flag, dalle variabili d'ambiente o dai file di configurazione.

Verifica rapida

Qual è la differenza tra cobra.Command.Run e RunE?

Riepilogo: fondamenti di Cobra

Punti chiave:

  • cobra.Command con Use/Short/RunE è l'elemento fondamentale
  • rootCmd.AddCommand(subCmd) per creare comandi gerarchici
  • cobra.ExactArgs/MinimumNArgs per convalidare gli argomenti
  • Guida e completamento vengono generati automaticamente

Domande Frequenti

La lezione «Fondamenti di Cobra» è gratuita?

Sì — il testo completo di «Fondamenti di Cobra» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Fondamenti di Cobra»?

Comando radice, Run, Args e generazione dell'help Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Fondamenti di Cobra»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di Cobra
  2. Flag e flag persistenti
  3. Sottocomandi e gruppi di comandi
  4. Distribuire strumenti CLI
← Torna a Go Academy