Heim > Backend-Entwicklung > Golang > Können Sie optionale Parameter für Flags in Cobra angeben?

Können Sie optionale Parameter für Flags in Cobra angeben?

王林
Freigeben: 2024-02-13 08:40:08
nach vorne
915 Leute haben es durchsucht

您可以为 Cobra 中的标志指定可选参数吗?

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.

Frageninhalt

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.

Lösung

kann mit nooptdefval

durchgeführt werden
rootcmd.persistentflags().lookup("someflag").nooptdefval = "5"
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

Im Folgenden sind die Ausführungsergebnisse verschiedener Flagwerte aufgeführt.

$ ./test
someflag is not set
$ ./test --someflag
someflag: 5
$ ./test --someflag=3
someflag: 3
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage