如何 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 是为其他东西而设计的,而不是作为被调用函数停止调用函数执行的手段。