Heim  >  Artikel  >  Backend-Entwicklung  >  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
Linda HamiltonOriginal
2024-11-16 18:13:03916Durchsuche

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
}

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!

Stellungnahme:
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