Benutzerdefiniertes Flag für Listen in Golang
Das Flag-Paket von Golang ermöglicht eine einfache Argumentanalyse, unterstützt jedoch normalerweise grundlegende Typen wie String, Integer, oder boolesch. Dies kann beim Arbeiten mit Wertelisten als einschränkend erscheinen.
Golang ermöglicht die Erstellung benutzerdefinierter Flags durch Implementierung der flag.Value-Schnittstelle. Diese Schnittstelle erfordert die Implementierung von zwei Methoden: String() und Set(). Durch die Definition eines benutzerdefinierten Flags für Listen können Sie das Parsen mehrerer Werte aktivieren, die über Befehlszeilen-Flags übergeben werden.
Definieren eines benutzerdefinierten Listen-Flags
Betrachten Sie das folgende Beispiel :
package main import "flag" import "fmt" type arrayFlags []string // String() implements the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set() implements the flag.Value interface func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil } var myFlags arrayFlags func main() { flag.Var(&myFlags, "list1", "Some description for this param.") flag.Parse() fmt.Println(myFlags) }
Dies definiert einen benutzerdefinierten Flag-Typ namens arrayFlags, der mehrere Werte akzeptiert. Das Flag ist an den Flag-Namen „list1“ gebunden und kann mit flag.Parse() analysiert werden.
Verwendung
Um mehrere Werte mit diesem benutzerdefinierten Flag zu übergeben, Sie können das Programm wie folgt ausführen:
go run your_file.go --list1 value1 --list1 value2 --list1 value3
Dadurch wird die Variable myFlags mit den drei bereitgestellten Werten gefüllt: ["value1", „Wert2“, „Wert3“]. Sie können dann innerhalb Ihres Programms auf diese Werte zugreifen.
Playground
Ein Live-Beispiel finden Sie auf dem folgenden Playground: [Playground-Link]
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe benutzerdefinierter Flags in Golang mehrere Werte in einer Liste analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!