Maison > développement back-end > Golang > Comment puis-je revenir d'une fonction parent dans Go après l'exécution d'une fonction enfant ?

Comment puis-je revenir d'une fonction parent dans Go après l'exécution d'une fonction enfant ?

Mary-Kate Olsen
Libérer: 2024-11-16 00:39:02
original
241 Les gens l'ont consulté

How Can I Return from a Parent Function in Go After a Child Function Executes?

Retour d'une fonction enfant au sein d'une fonction parent

On peut rencontrer une situation où l'on souhaite revenir d'une fonction parent en appelant un fonction enfant. Dans ce scénario, l'objectif est de terminer l'exécution dans la fonction parent apiEndpoint() lorsqu'une certaine condition est remplie dans la fonction enfant apiResponse().

Le problème

À l'aide de l'extrait de code fourni :

func apiEndpoint() {
    if false {
        apiResponse("error")
        // Return execution in parent function
        // Skip execution of apiResponse("all good")
    }

    apiResponse("all good")
}

func apiResponse(message string) {
    // Returns message to user via JSON
}
Copier après la connexion

L'intention est d'avoir apiResponse("error") termine l'exécution de apiEndpoint() afin qu'apiResponse("all good") ne soit pas exécuté. Cependant, le comportement par défaut dans Go est qu'une fonction ne peut pas contrôler le flux d'exécution en dehors de sa portée.

Résolution

Pour obtenir le résultat souhaité, il existe plusieurs approches :

1. Utilisez les instructions if-Else

Si la condition est assez simple, la structure if-else peut être utilisée pour éviter l'instruction return explicite :

func apiEndpoint() {
    if someCondition {
        apiResponse("error")
    } else {
        apiResponse("all good")
    }
}
Copier après la connexion

2. Retour de l'appelant à l'aide de valeurs

Si les deux fonctions renvoient des valeurs, vous pouvez utiliser une seule ligne de code pour renvoyer la valeur appropriée de la fonction appelant :

func apiEndpoint() int {
    if someCondition {
        return apiResponse("error")
    }

    return apiResponse("all good")
}

func apiResponse(message string) int {
    return 1 // Return an int
}
Copier après la connexion

Remarque

Bien que la panique soit une autre exception pouvant interrompre l'exécution, elle n'est pas considérée comme une solution appropriée dans ce contexte et doit être réservée à des cas exceptionnels. situations.

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