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

Comment les variables locales se comportent-elles dans Panic Recovery in Go ?

Mary-Kate Olsen
Libérer: 2024-10-29 14:20:02
original
647 Les gens l'ont consulté

How Do Local Variables Behave in Panic Recovery in Go?

Comprendre les affectations de variables locales dans Panic Recovery avec Go

Panic Recovery dans Go vous permet de gérer les erreurs d'exécution avec élégance, mais une idée fausse courante surgit lors de l'utilisation de variables locales dans la fonction de récupération.

Récupération de panique de valeur de retour nommée

Lorsqu'il s'agit de valeurs de retour nommées, la fonction de récupération a accès à ces variables avant qu'elles ne soient est revenu. Cela vous permet de leur attribuer des valeurs dans la fonction defer :

<code class="go">func foo() (result int, err error) {
    defer func() {
        if e := recover(); e != nil {
            result = -1
            err = errors.New(e.(string))
        }
    }()
    bar()
    result = 100
    err = nil
    return
}</code>
Copier après la connexion

Affectation de variables locales dans Panic Recovery

Cependant, lors de l'utilisation de variables locales avec des valeurs de retour sans nom , ce comportement diffère. Les variables locales sont créées sur la pile et initialisées avec des valeurs nulles lors de la saisie de la fonction. Si la panique se produit avant leur attribution, ils conserveront leurs valeurs nulles.

<code class="go">func foo() (int, error) {
    var result int
    var err error
    defer func() {
        if e := recover(); e != nil {
            result = -1
            err = errors.New(e.(string))
        }
    }()
    bar()
    result = 100
    err = nil
    return result, err
}</code>
Copier après la connexion

Dans cet exemple, result et err sont initialisés à 0 et nil, respectivement. Lorsque la panique se produit avant qu'une affectation ne soit effectuée, ces valeurs nulles sont renvoyées. En conséquence, le résultat sera :

result: 0
Copier après la connexion

Différences clés

Les valeurs de retour nommées sont traitées comme des variables nommées, permettant à la fonction defer de les modifier directement. Les variables locales, en revanche, sont stockées sur la pile et ne sont pas accessibles à la fonction de report tant qu'elles ne sont pas affectées.

Conclusion

Lors de la récupération d'une panique avec variables locales, il est crucial de comprendre que les variables locales ne sont pas initialisées tant qu'elles ne sont pas affectées. Par conséquent, si une panique survient avant les affectations, celles-ci conserveront leurs valeurs nulles et affecteront les valeurs renvoyées.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!