gpt4 book ai didi

go - 如何从另一个函数返回函数?

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:58 31 4
gpt4 key购买 nike

我想在调用/退出子函数 apiResponse() 时结束父函数 apiEndpoint() 的执行

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 语句。

如果示例像您的一样简单,您可以通过使用 if-else 来避免 return 语句:

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(),则调用函数中的执行将停止并且 panic 序列将在调用层次结构中上升(在运行 defer 函数之后,如果它们不调用 recover())。 Panic-recover 是为其他目的而设计的,而不是作为被调用函数停止调用函数执行的手段。

关于go - 如何从另一个函数返回函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30858823/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com