Flag e flag persistenti
Flag string, int e bool e integrazione con Viper
Flag e flag persistenti è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Flag locali
I flag locali si applicano solo al comando sul quale sono definiti. Utilizzi cmd.Flags():
var port int
serveCmd.Flags().IntVar(&port, "port", 8080, "HTTP server port")Flag persistenti
I flag persistenti vengono ereditati dal comando e da tutti i suoi sottocomandi. Utilizzi cmd.PersistentFlags():
var verbose bool
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose output")Flag brevi
Utilizzi le varianti *VarP per aggiungere una forma abbreviata di una sola lettera:
cmd.Flags().StringVarP(&output, "output", "o", "stdout", "Output destination")Tipi di flag
Cobra, tramite pflag, supporta String, Bool, Int, Int64, Float64, StringSlice, Duration, Count e altri tipi. Ognuno dispone di una variante Var, che accetta un puntatore, e di una variante più pratica, che restituisce un puntatore.
Flag obbligatori
Contrassegni un flag come obbligatorio: Cobra segnalerà un errore se non viene fornito:
cmd.MarkFlagRequired("config")Gruppi di flag
Contrassegni i flag come mutuamente esclusivi o obbligatori insieme con MarkFlagsRequiredTogether e MarkFlagsMutuallyExclusive:
cmd.MarkFlagsRequiredTogether("user", "password")
cmd.MarkFlagsMutuallyExclusive("json", "yaml")Flag StringSlice
Accetti più valori come elenco separato da virgole o tramite flag ripetuti:
var tags []string
cmd.Flags().StringSliceVar(&tags, "tags", nil, "Tags (comma-separated)")
// Usage: --tags a,b,c or --tags a --tags bAssociare i flag a Viper
Associ un flag di Cobra a una chiave di Viper, così il valore può provenire anche da una variabile d'ambiente o da un file di configurazione:
viper.BindPFlag("port", serveCmd.Flags().Lookup("port"))
viper.BindEnv("port", "APP_PORT")Visualizzazione del valore predefinito
Cobra mostra automaticamente il valore predefinito nel testo della guida. Fornisca un valore predefinito chiaro, che funzioni immediatamente nel caso comune.
Accedere ai valori dei flag
Acceda ai valori dei flag tramite il puntatore a cui li ha associati oppure li cerchi per nome nell'insieme di flag del comando se non può accedere al puntatore:
port, _ := cmd.Flags().GetInt("port")Metodo Changed
cmd.Flags().Changed("flag-name") restituisce true solo se l'utente ha impostato esplicitamente il flag. Lo utilizzi per distinguere tra un flag "non fornito" e uno "fornito con il valore predefinito".
Verifica rapida
Qual è la differenza tra un flag locale e un flag persistente in Cobra?
Riepilogo: flag e flag persistenti
Punti chiave:
- cmd.Flags(): locale; cmd.PersistentFlags(): ereditato dai sottocomandi
- *VarP per le forme abbreviate; MarkFlagRequired per i flag obbligatori
- MarkFlagsRequiredTogether / MarkFlagsMutuallyExclusive per le relazioni tra flag
- Changed() per rilevare se l'utente ha impostato esplicitamente un flag
Domande Frequenti
La lezione «Flag e flag persistenti» è gratuita?
Sì — il testo completo di «Flag e flag persistenti» è 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 «Flag e flag persistenti»?
Flag string, int e bool e integrazione con Viper 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 2 di 4.
Quanto tempo richiede la lezione «Flag e flag persistenti»?
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
- Fondamenti di Cobra
- Flag e flag persistenti
- Sottocomandi e gruppi di comandi
- Distribuire strumenti CLI