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 }
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") } }
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 }
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!