Heim > Backend-Entwicklung > Golang > Wie definiere ich einen benutzerdefinierten Flag-Typ für eine Werteliste in Go?

Wie definiere ich einen benutzerdefinierten Flag-Typ für eine Werteliste in Go?

Linda Hamilton
Freigeben: 2024-11-16 18:13:03
Original
1021 Leute haben es durchsucht

How to Define a Custom Flag Type for a List of Values 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
}
Nach dem Login kopieren

Verwenden des benutzerdefinierten Flags

Als nächstes deklarieren Sie eine Variable dieses Typs zur Bindung an das benutzerdefinierte Flag:

var myFlags arrayFlags
Nach dem Login kopieren

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.")
Nach dem Login kopieren

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
Nach dem Login kopieren

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()
}
Nach dem Login kopieren

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!

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