En programmation, il est souvent nécessaire qu'une fonction termine l'exécution de sa fonction parent. Ceci peut être réalisé par diverses méthodes, en fonction du langage de programmation et des exigences spécifiques du programme.
L'une de ces méthodes consiste à utiliser l'instruction return dans la fonction subordonnée. Lorsqu'une fonction rencontre une instruction return, elle quitte immédiatement la fonction et rend le contrôle à la fonction appelante.
Dans l'exemple de code fourni :
func apiEndpoint() { if false { apiResponse("error") // I want apiResponse() call to return (end execution) in parent func // so next apiResponse("all good") wont be executed } apiResponse("all good") } func apiResponse(message string) { // returns message to user via JSON }
L'intention est de terminer l'exécution dans le fonction parent apiEndpoint() lors de l'appel de la fonction subordonnée apiResponse(). Cependant, en Go, une fonction ne peut pas contrôler directement le flux d’exécution de son appelant. L'appelant est responsable de la fin de l'exécution.
Une solution à ce problème consiste à utiliser une instruction if-else dans la fonction parent :
func apiEndpoint() { if someCondition { apiResponse("error") } else { apiResponse("all good") } }
Dans cet exemple, apiResponse("error" ) ne sera exécuté que si someCondition est vraie. Sinon, apiResponse("all good") sera exécuté.
Une autre solution consiste à utiliser l'instruction return dans la fonction parent :
func apiEndpoint() int { if someCondition { return apiResponse("error") } return apiResponse("all good") } func apiResponse(message string) int { return 1 // Return an int }
Dans cet exemple, la fonction apiEndpoint() renvoie la valeur de la fonction apiResponse(). Si someCondition est vraie, la fonction apiEndpoint() renvoie le message d'erreur. Sinon, il renvoie le message de réussite.
Il est important de noter que, en général, les fonctions ne peuvent pas contrôler l'exécution de leurs appelants. Ils ne peuvent renvoyer que des valeurs ou déclencher des exceptions, qui sont ensuite gérées par l'appelant.
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!