從父函數中的子函數回傳
人們可能會遇到這樣的情況:他們希望在呼叫子函數。在這種情況下,目標是當子函數 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中文網其他相關文章!