Wie erstelle ich benutzerdefinierte Flag-Typen zur Verarbeitung von Listenargumenten in Golang?

Mary-Kate Olsen
Freigeben: 2024-11-17 20:30:02
Original
739 Leute haben es durchsucht

How to Create Custom Flag Types to Handle List Arguments in Golang?

So definieren Sie benutzerdefinierte Flag-Typen zur Verarbeitung von Listenargumenten in Golang

Pythons argparse-Modul bietet das Argument nargs, um die Anzahl der Werte anzugeben beim Umgang mit Listen analysiert werden. Das Flag-Paket von Golang unterstützt zwar Basistypen, bietet jedoch keine direkte Möglichkeit, Listen zu akzeptieren. So definieren Sie Ihren eigenen Flag-Typ, um dieses Problem zu beheben:

Erstellen eines benutzerdefinierten Array-Flag-Typs:

Golang-Programme können ihre eigenen Flag-Typen erstellen, indem sie das Flag implementieren .Value-Schnittstelle. Der folgende Code definiert einen arrayFlags-Typ zur Verarbeitung von String-Arrays:

type arrayFlags []string

// String implements the flag.Value interface to convert the flag value to a string
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set implements the flag.Value interface to update the flag value when a new argument is provided
func (i *arrayFlags) Set(value string) error {
    *i = append(*i, value)
    return nil
}
Nach dem Login kopieren

Verwendung des benutzerdefinierten Flag-Typs:

Um den benutzerdefinierten Array-Flag-Typ zu verwenden, können Sie Folgendes tun Verwenden Sie die Funktion flag.Var(). Hier ist ein Beispiel:

var myFlags arrayFlags

func main() {
    flag.Var(&myFlags, "list1", "Some description for this param.")
    flag.Parse()
}
Nach dem Login kopieren

Mehrere Flags analysieren:

Sie können mehrere Flags wie folgt übergeben:

go run your_file.go --list1 value1 --list1 value2
Nach dem Login kopieren

Die Variable myFlags wird enthalten nun die an das Flag list1 übergebenen Werte und ermöglichen Ihnen den Zugriff auf die Werteliste.

Das obige ist der detaillierte Inhalt vonWie erstelle ich benutzerdefinierte Flag-Typen zur Verarbeitung von Listenargumenten in Golang?. 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