我希望在子函数apiEndpoint()
中调用/退出时在父函数apiResponse()
中结束执行
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
}
答案 0 :(得分:2)
函数或方法无法控制从其调用的位置执行(控制流)。您甚至不保证它是从您的函数调用的,例如可以调用它来初始化全局变量。
据说调用者有责任以return
语句显式结束执行和返回。
如果示例与您的示例一样简单,则可以使用return
避免使用if-else
语句:
func apiEndpoint() {
if someCondition {
apiResponse("error")
} else {
apiResponse("all good")
}
}
此外,如果函数具有返回值并且apiResponse()
将返回一个值作为调用者的返回值,则可以在一行中执行return
,例如
func apiEndpoint() int {
if someCondition {
return apiResponse("error")
}
return apiResponse("all good")
}
func apiResponse(message string) int {
return 1 // Return an int
}
注意:强>
只是为了完整性而不是作为你的情况下的解决方案:如果被调用函数将panic()
,则调用函数中的执行将停止,并且调用序列将在调用层次结构中上升(在运行{{之后) 1}}函数,如果他们不调用defer
)。恐慌恢复是针对其他事情而设计的,而不是被调用函数在调用函数中停止执行的意思。
答案 1 :(得分:0)
使用return
声明:
func apiEndpoint() {
if false {
apiResponse("error")
return
}
apiResponse("all good")
}
func apiResponse(message string) {
// returns message to user via JSON
}