親関数内の子関数から戻る
呼び出し時に親関数から戻りたい状況に遭遇する可能性があります。子関数。このシナリオの目標は、子関数 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 ステートメントを使用する
条件が十分に単純な場合は、明示的な return ステートメントを回避するために if-else 構造を使用できます。
func apiEndpoint() { if someCondition { apiResponse("error") } else { apiResponse("all good") } }
2.値を使用して呼び出し元から返す
両方の関数が値を返す場合、1 行のコードを使用して呼び出し元関数から適切な値を返すことができます:
func apiEndpoint() int { if someCondition { return apiResponse("error") } return apiResponse("all good") } func apiResponse(message string) int { return 1 // Return an int }
注
パニックは実行を停止する可能性のある別の例外ですが、この状況では適切な解決策とは見なされず、例外的な状況のために予約する必要があります。
以上が子関数の実行後に Go で親関数から戻るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。