Heim > Artikel > Backend-Entwicklung > Können Sie optionale Parameter für Flags in Cobra angeben?
php-Editor Zimo antwortete: Ja, Sie können in Cobra optionale Parameter für Flags angeben. Cobra ist ein leistungsstarkes Befehlszeilentool zum Erstellen eleganter PHP-Anwendungen. Sie können optionale Parameter für einen Cobra-Befehl angeben, indem Sie nach dem Flag eckige Klammern ([]) hinzufügen. Dies ermöglicht es dem Benutzer, bei Bedarf optional zusätzliche Informationen oder Konfigurationsoptionen bereitzustellen. Die Verwendung optionaler Parameter kann die Flexibilität und Anpassungsfähigkeit des Programms erhöhen und den Benutzern ein besseres Erlebnis bieten.
Angenommen, ich habe dieses Flag in meinem Programm und es gibt nur positive Zahlen aus:
c.PersistentFlags().IntVar(&SomeFlag, optionSomeFlag, 0, "做某事(范围: x-y)")
Der Standardwert ist 0. Wenn der Benutzer das Flag also nicht umschaltet, wird nichts gedruckt. Wie kann man ein Flag dazu bringen, Parameter zu akzeptieren, aber selbst einen Standardwert zu haben? d.h. wenn der Standardwert 5
ist./program --someflag
输出将是 5
Aber wenn ich es täte
./program --someflag=1
输出将为 1
Ich versuche, dem Benutzerhandbuch von Cobra zu folgen und hatte erwartet, einen Befehlstyp zu haben, der es mir ermöglichen würde, einen Standardwert nur dann anzugeben, wenn der Benutzer das Flag auslöst, anstatt nur einen Standardwert vollständig anzugeben. Möglicherweise habe ich das falsch verstanden oder etwas übersehen.
kann mit nooptdefval
durchgeführt werdenrootcmd.persistentflags().lookup("someflag").nooptdefval = "5"
Im folgenden Code finden Sie ein vollständiges Beispiel einer Befehlszeilenanwendung mit Cobra, die das von Ihnen beschriebene Verhalten aufweist
package main import ( "fmt" "github.com/spf13/cobra" ) func main() { var someflag int var defaultsomeflag = "5" // create the root command. rootcmd := &cobra.command{ use: "program", short: "a brief description of your application", long: "a longer description of your application", run: func(cmd *cobra.command, args []string) { // check whether the flag was explicitly set. if cmd.flags().lookup("someflag").changed { fmt.printf("someflag: %d\n", someflag) } else { // if the flag was not explicitly set don't print a value. fmt.printf("someflag is not set\n") } }, } // define the flag and set its default value. rootcmd.persistentflags().intvar(&someflag, "someflag", 0, "do something (range: x-y)") rootcmd.persistentflags().lookup("someflag").nooptdefval = defaultsomeflag // execute the root command. if err := rootcmd.execute(); err != nil { fmt.println(err) } }
Im Folgenden sind die Ausführungsergebnisse verschiedener Flagwerte aufgeführt.
$ ./test someflag is not set $ ./test --someflag someflag: 5 $ ./test --someflag=3 someflag: 3
Das obige ist der detaillierte Inhalt vonKönnen Sie optionale Parameter für Flags in Cobra angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!