从父函数中的子函数返回
人们可能会遇到这样的情况:他们希望在调用子函数。在这种情况下,目标是当子函数 apiResponse() 中满足特定条件时终止父函数 apiEndpoint() 中的执行。
问题
使用提供的代码片段:
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 }
目的是让 apiResponse("error") 终止 apiEndpoint() 的执行,以便 apiResponse("all good") 不被执行。然而,Go 中的默认行为是函数无法控制其作用域之外的执行流程。
解决方案
为了达到预期的结果,有几种方法:
1。使用if-Else语句
如果条件足够简单,可以使用if-else结构来避免显式的return语句:
func apiEndpoint() { if someCondition { apiResponse("error") } else { apiResponse("all good") } }
2.使用值从调用者返回
如果两个函数都返回值,您可以使用一行代码从调用者函数返回适当的值:
func apiEndpoint() int { if someCondition { return apiResponse("error") } return apiResponse("all good") } func apiResponse(message string) int { return 1 // Return an int }
注意
虽然恐慌是另一个可能停止执行的异常,但在这种情况下它不被认为是合适的解决方案,应该保留用于特殊情况。
以上是Go中子函数执行后如何从父函数返回?的详细内容。更多信息请关注PHP中文网其他相关文章!