Flaggor och persistenta flaggor
String-, int- och bool-flaggor samt Viper-integration
Flaggor och persistenta flaggor är en gratis lektion i Go Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Go Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Go Academy innehåller totalt 4 lektioner.
Lokala flaggor
Lokala flaggor gäller endast för det kommando där de definieras. Använd cmd.Flags():
var port int
serveCmd.Flags().IntVar(&port, "port", 8080, "HTTP server port")Beständiga flaggor
Beständiga flaggor ärvs av kommandot och alla dess underkommandon. Använd cmd.PersistentFlags():
var verbose bool
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose output")Kortflaggor
Använd *VarP-varianterna för att lägga till en kortform med en enda bokstav:
cmd.Flags().StringVarP(&output, "output", "o", "stdout", "Output destination")Flaggtyper
Cobra (via pflag) stöder: String, Bool, Int, Int64, Float64, StringSlice, Duration, Count med flera. Var och en har en Var-variant (tar en pekare) och en bekvämlighetsvariant (returnerar en pekare).
Obligatoriska flaggor
Markera en flagga som obligatorisk — Cobra rapporterar ett fel om den inte anges:
cmd.MarkFlagRequired("config")Flagggrupper
Markera flaggor som ömsesidigt uteslutande eller som obligatoriska tillsammans med MarkFlagsRequiredTogether och MarkFlagsMutuallyExclusive:
cmd.MarkFlagsRequiredTogether("user", "password")
cmd.MarkFlagsMutuallyExclusive("json", "yaml")StringSlice-flagga
Acceptera flera värden som en kommaseparerad lista eller genom upprepade flaggor:
var tags []string
cmd.Flags().StringSliceVar(&tags, "tags", nil, "Tags (comma-separated)")
// Usage: --tags a,b,c or --tags a --tags bKoppla flaggor till Viper
Koppla en cobra-flagga till en Viper-nyckel så att värdet även kan komma från en miljövariabel eller konfigurationsfil:
viper.BindPFlag("port", serveCmd.Flags().Lookup("port"))
viper.BindEnv("port", "APP_PORT")Visning av standardvärde
Cobra visar automatiskt standardvärdet i hjälptexten. Ange ett tydligt standardvärde som fungerar direkt i det vanliga fallet.
Åtkomst till flaggvärden
Åt flaggvärden via pekaren du band, eller slå upp dem efter namn från kommandots flagguppsättning om pekaren inte är åtkomlig:
port, _ := cmd.Flags().GetInt("port")Metoden Changed
cmd.Flags().Changed("flag-name") returnerar true endast om användaren uttryckligen angav flaggan. Använd den för att skilja mellan ”inte angiven” och ”angiven med standardvärdet”.
Snabbkontroll
Vad är skillnaden mellan en lokal flagga och en beständig flagga i Cobra?
Sammanfattning: flaggor och beständiga flaggor
Viktiga punkter:
- cmd.Flags(): lokala; cmd.PersistentFlags(): ärvs av underkommandon
- *VarP för kortform; MarkFlagRequired för obligatoriska flaggor
- MarkFlagsRequiredTogether / MarkFlagsMutuallyExclusive för relationer mellan flaggor
- Changed() för att upptäcka om användaren uttryckligen angav en flagga
Lär dig Go med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”Flaggor och persistenta flaggor” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Go Academy, inklusive ”Flaggor och persistenta flaggor”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Go Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Flaggor och persistenta flaggor”?
String-, int- och bool-flaggor samt Viper-integration Ni övar på Go Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Go Academy?
Du behöver inga förkunskaper. Utbildningen i Go Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Flaggor och persistenta flaggor”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Go Academy-lektionen?
Ja. Varje Go Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Grunderna i Cobra
- Flaggor och persistenta flaggor
- Underkommandon och kommandogrupper
- Distribuera CLI-verktyg