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

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

王林
王林nach vorne
2024-02-13 08:40:08850Durchsuche

您可以为 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"

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen