如何 return in func FROM another func?
How to return in func FROM another func?
我想在子函数 calling/exiting 上结束父函数 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
}
使用return
语句:
func apiEndpoint() {
if false {
apiResponse("error")
return
}
apiResponse("all good")
}
func apiResponse(message string) {
// returns message to user via JSON
}
函数或方法无法从调用它的地方控制执行(控制流)。你甚至不能保证它是从你的函数调用的,它可能被调用来初始化一个全局变量。
也就是说,调用者有责任结束执行,return,明确地使用 return
语句。
如果示例像您的示例一样简单,您可以通过使用 if-else
:
来避免 return
语句
func apiEndpoint() {
if someCondition {
apiResponse("error")
} else {
apiResponse("all good")
}
}
此外,如果函数具有 return 值,并且 apiResponse()
将 return 一个值,该值将是调用者的 return 值,您可以执行 return
在一行中,例如
func apiEndpoint() int {
if someCondition {
return apiResponse("error")
}
return apiResponse("all good")
}
func apiResponse(message string) int {
return 1 // Return an int
}
注:
只是为了完整性而不是作为你的情况的解决方案:如果被调用函数 panic()
,调用函数中的执行将停止并且恐慌序列将在调用层次结构中上升(在 运行 defer
函数,如果它们不调用 recover()
)。 Panic-recover 是为其他东西而设计的,而不是作为被调用函数停止调用函数执行的手段。
我想在子函数 calling/exiting 上结束父函数 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
}
使用return
语句:
func apiEndpoint() {
if false {
apiResponse("error")
return
}
apiResponse("all good")
}
func apiResponse(message string) {
// returns message to user via JSON
}
函数或方法无法从调用它的地方控制执行(控制流)。你甚至不能保证它是从你的函数调用的,它可能被调用来初始化一个全局变量。
也就是说,调用者有责任结束执行,return,明确地使用 return
语句。
如果示例像您的示例一样简单,您可以通过使用 if-else
:
return
语句
func apiEndpoint() {
if someCondition {
apiResponse("error")
} else {
apiResponse("all good")
}
}
此外,如果函数具有 return 值,并且 apiResponse()
将 return 一个值,该值将是调用者的 return 值,您可以执行 return
在一行中,例如
func apiEndpoint() int {
if someCondition {
return apiResponse("error")
}
return apiResponse("all good")
}
func apiResponse(message string) int {
return 1 // Return an int
}
注:
只是为了完整性而不是作为你的情况的解决方案:如果被调用函数 panic()
,调用函数中的执行将停止并且恐慌序列将在调用层次结构中上升(在 运行 defer
函数,如果它们不调用 recover()
)。 Panic-recover 是为其他东西而设计的,而不是作为被调用函数停止调用函数执行的手段。