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 }
À l'aide de l'indicateur personnalisé
Ensuite, déclarez une variable de ce type à lier à l'indicateur personnalisé :
var myFlags arrayFlags
Enregistrement du drapeau personnalisé
Enfin, vous pouvez enregistrez votre drapeau personnalisé avec le package flag :
flag.Var(&myFlags, "list1", "Some description for this param.")
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
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() }
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!