ホームページ >バックエンド開発 >Golang >Go では、従属関数はその親関数の実行フローにどのような影響を与えることができますか?

Go では、従属関数はその親関数の実行フローにどのような影響を与えることができますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-15 19:50:03427ブラウズ

How Can a Subordinate Function Affect the Execution Flow of its Parent Function in Go?

下位関数から親関数への復帰

プログラミングでは、多くの場合、関数が親関数の実行を終了する必要があります。これは、プログラミング言語とプログラムの特定の要件に応じて、さまざまな方法で実現できます。

そのような方法の 1 つは、従属関数内で return ステートメントを使用することです。関数が return ステートメントに遭遇すると、関数はただちに関数を終了し、呼び出し元の関数に制御を返します。

提供されたコード例では:

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
}

目的は、実行を終了することです。従属関数 apiResponse() を呼び出す際の親関数 apiEndpoint()。ただし、Go では、関数は呼び出し元の実行フローを直接制御できません。呼び出し元は実行を終了する責任があります。

この問題に対する 1 つの解決策は、親関数内で if-else ステートメントを使用することです。

func apiEndpoint() {
    if someCondition {
        apiResponse("error")
    } else {
        apiResponse("all good")
    }
}

この例では、apiResponse("error" ) は、someCondition が true の場合にのみ実行されます。それ以外の場合は、apiResponse("all Good") が実行されます。

別の解決策は、親関数内で return ステートメントを使用することです。

func apiEndpoint() int {
    if someCondition {
        return apiResponse("error")
    }

    return apiResponse("all good")
}

func apiResponse(message string) int {
    return 1 // Return an int
}

この例では、apiEndpoint() 関数apiResponse() 関数の値を返します。 someCondition が true の場合、apiEndpoint() 関数はエラー メッセージを返します。それ以外の場合は、成功メッセージを返します。

一般に、関数は呼び出し元の実行を制御できないことに注意することが重要です。値を返すか例外を発生させることのみが可能で、これらは呼び出し元によって処理されます。

以上がGo では、従属関数はその親関数の実行フローにどのような影響を与えることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。