Maison  >  Article  >  développement back-end  >  le drapeau Golang ignore les erreurs

le drapeau Golang ignore les erreurs

WBOY
WBOYoriginal
2023-05-10 17:59:37528parcourir

Le langage Go (golang) est un langage de programmation backend en croissance rapide. Il a été développé par Google pour fournir un langage de programmation rapide, efficace, concis et sécurisé. Dans les applications pratiques, Golang fournit un package d'indicateurs qui peut être utilisé pour lire les paramètres à partir de la ligne de commande. Cependant, cette utilisation présente quelques défauts, car parfois les valeurs des paramètres transmises dans la ligne de commande ne répondent pas aux exigences. À ce stade, le programme génère une erreur et s'arrête, provoquant le crash de l'ensemble du programme. Cet article expliquera comment ignorer les erreurs lors de l'utilisation du package golang flag et donnera des méthodes d'implémentation spécifiques.

Utilisation de base du package de drapeaux Golang

Le package de drapeaux Golang fournit un moyen simple d'analyser les paramètres de ligne de commande. Dans un programme Go, vous pouvez facilement analyser les paramètres de ligne de commande en important simplement le package flag. Le package flag propose deux façons de lire les paramètres de ligne de commande : flag.String() et flag.Int().

Utilisez la fonction flag.StringVar() pour lire les valeurs des paramètres de type chaîne à partir de la ligne de commande. Si vous avez besoin de lire la valeur du paramètre de type entier, vous pouvez utiliser la fonction flag.IntVar(). L'utilisation de base des deux fonctions est la suivante :

var (
    name string
    age  int
)

func main() {
    flag.StringVar(&name, "name", "default name", "please input name")
    flag.IntVar(&age, "age", 18, "please input age")
    flag.Parse()
    fmt.Printf("name=%s, age=%d", name, age)
}

Dans l'exemple ci-dessus, nous lisons respectivement les paramètres de type chaîne et entier dans la ligne de commande via les fonctions flag.StringVar() et flag.IntVar(), et les lisons respectivement, les valeurs sont attribuées au nom et à l'âge des variables. Lors de la définition des variables, nous pouvons également définir des valeurs par défaut et des informations d'aide pour les variables à afficher à l'utilisateur au démarrage du programme. Enfin, la fonction flag.Parse() encapsule l'opération réelle d'analyse des paramètres de ligne de commande.

Gestion des erreurs du package de drapeaux Golang

Lors de l'utilisation du package de drapeaux Golang, si les types de paramètres de ligne de commande ne correspondent pas, Golang renverra une erreur et bloquera l'exécution ultérieure du programme. Par exemple, si l'âge d'entrée est une chaîne et que notre programme doit lire l'âge de type entier, le programme ne pourra pas continuer son exécution.

Alors, comment gérer ces erreurs en utilisation réelle ? En fait, le package flag lui-même fournit une méthode de traitement : quitter le programme via la fonction os.Exit() après la gestion des erreurs. Par exemple :

var (
    name string
    age  int
)

func main() {
    flag.StringVar(&name, "name", "default name", "please input name")
    flag.IntVar(&age, "age", 18, "please input age")
    flag.Parse()
    fmt.Printf("name=%s, age=%d", name, age)
}

Dans l'exemple ci-dessus, si l'âge saisi ne répond pas aux exigences de plage, le programme générera une erreur et arrêtera l'exécution. Dans ce cas, la valeur que nous avons transmise dans la ligne de commande n'est pas valide. Par conséquent, nous devons modifier le programme afin qu'il puisse continuer l'exécution et traiter d'autres valeurs de paramètres.

Ignorer une mauvaise implémentation

Pour que le programme continue son exécution, vous devez utiliser la fonction de report dans Golang. La fonction Defer est utilisée pour retarder l'exécution des instructions de fonction à la fin de l'exécution de la fonction. Dans ce cas, nous pouvons l'utiliser pour restaurer le flux de contrôle du programme.

Dans la mise en œuvre, nous pouvons utiliser la fonction de récupération pour capturer l'erreur et définir la valeur récupérée sur la valeur par défaut. L'utilisation de cette méthode garantit que notre application fonctionnera correctement en toutes circonstances, et même les erreurs ne bloqueront pas la progression du programme. Un exemple est le suivant :

var (
    name string
    age  int
)

func main() {
    flag.StringVar(&name, "name", "default name", "please input name")
    flag.IntVar(&age, "age", 18, "please input age")
    defer func() {
        if err := recover(); err != nil {
            log.Printf("error: %s", err)
            age = 18
        }
    }()
    flag.Parse()
    fmt.Printf("name=%s, age=%d", name, age)
}

Dans l'exemple ci-dessus, nous avons défini une fonction de report avant la partie principale du programme. Cette fonction détecte une erreur et l'imprime, puis définit l'âge à la valeur par défaut de 18. Si nous définissons maintenant l'âge sous forme de chaîne au lieu d'un nombre, le programme détectera une erreur. L'erreur détectée sera imprimée sur la console, et le programme poursuivra ensuite son exécution et affichera la valeur d'âge par défaut de 18.

Conclusion :

Golang fournit le package flag pour nous aider à analyser les paramètres de ligne de commande. Cependant, s'il y a des erreurs dans les arguments de la ligne de commande, le programme cessera de s'exécuter. Dans une application réelle, cette utilisation peut provoquer le crash de l'ensemble du programme. Pour éviter que cela ne se produise, nous devons utiliser les fonctions de report et de récupération pour ignorer l'erreur et reprendre l'exécution normale du programme. Grâce à la démonstration de l'exemple ci-dessus, nous pouvons voir qu'il est tout à fait possible d'ignorer une mauvaise méthode d'implémentation. Veuillez toutefois noter que la prudence est de mise lors de votre candidature au programme afin d'éviter d'autres situations anormales.

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