Flags und persistente Flags
String-, int- und bool-Flags sowie die Viper-Integration
Flags und persistente Flags ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Lokale Flags
Lokale Flags gelten nur für den Befehl, für den sie definiert wurden. Verwenden Sie cmd.Flags():
var port int
serveCmd.Flags().IntVar(&port, "port", 8080, "HTTP server port")Persistente Flags
Persistente Flags werden vom Befehl und allen seinen Unterbefehlen geerbt. Verwenden Sie cmd.PersistentFlags():
var verbose bool
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose output")Kurz-Flags
Verwenden Sie die *VarP-Varianten, um eine Kurzform aus einem einzelnen Buchstaben hinzuzufügen:
cmd.Flags().StringVarP(&output, "output", "o", "stdout", "Output destination")Flag-Typen
Cobra unterstützt (über pflag): String, Bool, Int, Int64, Float64, StringSlice, Duration, Count und weitere Typen. Für jeden Typ gibt es eine Var-Variante (nimmt einen Zeiger entgegen) und eine Convenience-Variante (gibt einen Zeiger zurück).
Erforderliche Flags
Markieren Sie ein Flag als erforderlich – Cobra meldet einen Fehler, wenn es nicht angegeben wurde:
cmd.MarkFlagRequired("config")Flag-Gruppen
Markieren Sie Flags mit MarkFlagsRequiredTogether und MarkFlagsMutuallyExclusive als gegenseitig exklusiv oder als gemeinsam erforderlich:
cmd.MarkFlagsRequiredTogether("user", "password")
cmd.MarkFlagsMutuallyExclusive("json", "yaml")StringSlice-Flag
Akzeptieren Sie mehrere Werte als kommagetrennte Liste oder über wiederholte Flags:
var tags []string
cmd.Flags().StringSliceVar(&tags, "tags", nil, "Tags (comma-separated)")
// Usage: --tags a,b,c or --tags a --tags bFlags an Viper binden
Binden Sie ein Cobra-Flag an einen Viper-Schlüssel, damit der Wert auch aus einer Umgebungsvariablen oder einer Konfigurationsdatei stammen kann:
viper.BindPFlag("port", serveCmd.Flags().Lookup("port"))
viper.BindEnv("port", "APP_PORT")Anzeige des Standardwerts
Cobra zeigt den Standardwert automatisch im Hilfetext an. Geben Sie einen eindeutigen Standardwert an, der im üblichen Fall sofort funktioniert.
Auf Flag-Werte zugreifen
Greifen Sie über den gebundenen Zeiger auf Flag-Werte zu oder suchen Sie sie anhand ihres Namens im Flag-Satz des Befehls, wenn der Zeiger nicht zugänglich ist:
port, _ := cmd.Flags().GetInt("port")Changed-Methode
cmd.Flags().Changed("flag-name") gibt nur dann true zurück, wenn der Benutzer das Flag ausdrücklich gesetzt hat. Verwenden Sie die Methode, um zwischen „nicht angegeben“ und „mit dem Standardwert angegeben“ zu unterscheiden.
Kurzer Test
Was ist in Cobra der Unterschied zwischen einem lokalen und einem persistenten Flag?
Zusammenfassung: Flags und persistente Flags
Wichtige Punkte:
- cmd.Flags(): lokal; cmd.PersistentFlags(): wird von Unterbefehlen geerbt
- *VarP für Kurzformen; MarkFlagRequired für erforderliche Flags
- MarkFlagsRequiredTogether / MarkFlagsMutuallyExclusive für Beziehungen zwischen Flags
- Changed(), um zu erkennen, ob der Benutzer ein Flag ausdrücklich gesetzt hat
Häufig gestellte Fragen
Ist die Lektion „Flags und persistente Flags“ kostenlos?
Ja — der vollständige Text von „Flags und persistente Flags“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Flags und persistente Flags“?
String-, int- und bool-Flags sowie die Viper-Integration Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Flags und persistente Flags“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Cobra-Grundlagen
- Flags und persistente Flags
- Unterbefehle und Befehlsgruppen
- CLI-Tools verteilen