Maison > développement back-end > Golang > le corps du texte

Comment définir un type d'indicateur personnalisé pour une liste de valeurs dans Go ?

Linda Hamilton
Libérer: 2024-11-16 18:13:03
original
926 Les gens l'ont consulté

How to Define a Custom Flag Type for a List of Values in Go?

Obtenir une liste de valeurs dans un indicateur dans Go

Dans Go, le package flag prend en charge l'analyse des arguments de ligne de commande. Cependant, il ne fournissait initialement qu'une gamme limitée de types de données (String, Int, Bool). Pour prendre en charge des données plus complexes, vous pouvez définir votre propre type d'indicateur et utiliser flag.Var() pour le lier.

Type d'indicateur personnalisé pour la liste

Envisagez un indicateur qui accepte plusieurs valeurs sous forme de liste. Tout d'abord, définissez un type d'indicateur personnalisé :

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
}
Copier après la connexion

À l'aide de l'indicateur personnalisé

Ensuite, déclarez une variable de ce type à lier à l'indicateur personnalisé :

var myFlags arrayFlags
Copier après la connexion

Enregistrement du drapeau personnalisé

Enfin, vous pouvez enregistrez votre drapeau personnalisé avec le package flag :

flag.Var(&myFlags, "list1", "Some description for this param.")
Copier après la connexion

Maintenant, vous pouvez transmettre plusieurs valeurs à ce drapeau lors de l'exécution de votre programme :

go run your_file.go --list1 value1 --list1 value2
Copier après la connexion

Extrait de code mis à jour

Pour référence, voici l'extrait de code complet :

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()
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal