Heim > Backend-Entwicklung > Golang > Wie implementiert man unabhängige Flag-Sets für Unterbefehle in Go?

Wie implementiert man unabhängige Flag-Sets für Unterbefehle in Go?

Susan Sarandon
Freigeben: 2025-01-01 00:08:10
Original
740 Leute haben es durchsucht

How to Implement Independent Flag Sets for Subcommands in Go?

Unabhängige Flag-Sets in GoLang

In der Go-Dokumentation für das Flag-Paket heißt es, dass es die Definition unabhängiger Flag-Sets ermöglicht, geeignet zum Implementieren von Unterbefehlen in einer Befehlszeilenschnittstelle. Es stellt sich jedoch die Frage, wie diese Funktionalität erreicht werden kann.

In einem Szenario, in dem zwei FlagSet-Objekte definiert sind, kann das Parsen eines davon zu Fehlern und Warnungen führen, wenn die Befehlszeile Flags enthält, die für das andere bestimmt sind. Das folgende Beispiel veranschaulicht dieses Problem:

f1 := flag.NewFlagSet("f1", flag.ContinueOnError)
apply := f1.Bool("apply", false, "")
silent := f1.Bool("silent", false, "")
if err := f1.Parse(os.Args[1:]); err == nil {
    fmt.Println(*apply, *silent)
}
f2 := flag.NewFlagSet("f2", flag.ContinueOnError)
reset := f2.Bool("reset", false, "")
if err := f2.Parse(os.Args[1:]); err == nil {
    fmt.Println(*reset)
}
Nach dem Login kopieren

Dieser Code erzeugt Warnungen, wenn versucht wird, cmd -apply oder cmd -reset auszuführen. Das Ziel besteht darin, separate FlagSet-Objekte zu verwalten und sicherzustellen, dass -silent nur für -apply funktioniert.

Die Lösung besteht darin, die Unterbefehle zu unterscheiden und dann Parse für das entsprechende FlagSet aufzurufen. Der überarbeitete Code:

f1 := flag.NewFlagSet("f1", flag.ContinueOnError)
silent := f1.Bool("silent", false, "")
f2 := flag.NewFlagSet("f2", flag.ContinueOnError)
loud := f2.Bool("loud", false, "")

switch os.Args[1] {
  case "apply":
    if err := f1.Parse(os.Args[2:]); err == nil {
      fmt.Println("apply", *silent)
    }
  case "reset":
    if err := f2.Parse(os.Args[2:]); err == nil {
      fmt.Println("reset", *loud)
    }
}
Nach dem Login kopieren

Bei diesem Ansatz wird nur das relevante FlagSet basierend auf dem angegebenen Unterbefehl analysiert, wodurch das gewünschte Verhalten sichergestellt wird.

Das obige ist der detaillierte Inhalt vonWie implementiert man unabhängige Flag-Sets für Unterbefehle in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage