Heim > Artikel > Backend-Entwicklung > Wie definiere ich einen benutzerdefinierten Flag-Typ für eine Werteliste in Go?
Eine Werteliste in ein Flag in Go abrufen
In Go unterstützt das Flag-Paket das Parsen von Befehlszeilenargumenten. Allerdings stellte es zunächst nur eine begrenzte Auswahl an Datentypen bereit (String, Int, Bool). Um komplexere Daten zu berücksichtigen, können Sie Ihren eigenen Flag-Typ definieren und ihn mit flag.Var() binden.
Benutzerdefinierter Flag-Typ für Liste
Stellen Sie sich ein Flag vor das mehrere Werte als Liste akzeptiert. Definieren Sie zunächst einen benutzerdefinierten Flag-Typ:
type arrayFlags []string // String is an implementation of the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set is an implementation of the flag.Value interface func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil }
Verwenden des benutzerdefinierten Flags
Als nächstes deklarieren Sie eine Variable dieses Typs zur Bindung an das benutzerdefinierte Flag:
var myFlags arrayFlags
Registrieren der benutzerdefinierten Flagge
Schließlich können Sie Ihre benutzerdefinierte Flagge mit dem Flaggenpaket registrieren:
flag.Var(&myFlags, "list1", "Some description for this param.")
Jetzt können Sie bestehen Mehrere Werte für dieses Flag, wenn Sie Ihr Programm ausführen:
go run your_file.go --list1 value1 --list1 value2
Aktualisiertes Code-Snippet
Als Referenz finden Sie hier das vollständige Code-Snippet:
package main import ( "flag" "fmt" ) type arrayFlags []string // String is an implementation of the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set is an implementation of 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() }
Das obige ist der detaillierte Inhalt vonWie definiere ich einen benutzerdefinierten Flag-Typ für eine Werteliste in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!