Maison >développement back-end >Golang >Comment analyser les valeurs de liste en indicateurs dans Go ?

Comment analyser les valeurs de liste en indicateurs dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 08:36:131036parcourir

How to Parse List Values into Flags in Go?

Analyse des valeurs de liste en indicateurs dans Go

Dans Go, l'équivalent de l'argparse de Python est le package flag. Bien que les types d'indicateurs intégrés ne prennent en charge que les chaînes, les entiers et les booléens, il est possible de définir des types d'indicateurs personnalisés pour s'adapter aux listes de valeurs.

Type d'indicateur personnalisé pour les listes

Pour définir un type d'indicateur personnalisé pour les valeurs de liste, implémentez l'interface flag.Value dans un nouveau type, tel que arrayFlags. La méthode String() fournit une représentation sous forme de chaîne de la liste et la méthode Set() met à jour la liste avec de nouvelles valeurs.

Liaison de l'indicateur personnalisé

Une fois que vous Après avoir défini le type d'indicateur personnalisé, vous pouvez utiliser flag.Var() pour le lier à un indicateur. Cela vous permet de transmettre plusieurs valeurs pour cet indicateur au moment de l'exécution.

Exemple d'utilisation

Voici un exemple d'utilisation d'un type d'indicateur personnalisé pour les listes :

package main

import (
    "flag"
    "fmt"
)

type arrayFlags []string

func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

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()

    fmt.Println(myFlags) // Prints [value1 value2]
}

L'exécution de ce code avec la commande suivante analysera les valeurs de la liste dans myFlags variable :

go run your_file.go --list1 value1 --list1 value2

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!

Déclaration:
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