ホームページ > バックエンド開発 > Golang > Go の条件文で関数呼び出しを正しく使用するにはどうすればよいですか?

Go の条件文で関数呼び出しを正しく使用するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-03 00:13:38
オリジナル
537 人が閲覧しました

How Do I Correctly Use Function Calls in Go's Conditional Statements?

条件文での関数の評価

条件文では、多くの場合、条件内の関数を評価する必要があります。ただし、Go プログラミング言語では、そのようなステートメントの値として関数呼び出しを使用しようとする場合、特定の要件が課されます。これをよりよく理解するために、次の例を考えてみましょう。

package main

import "fmt"

func main() {
    if sumThis(1, 2) > sumThis(3, 4) {
        fmt.Println("test")
    } else {
        fmt.Println("derp")
    }
}

func sumThis(a, b int) {
    return a + b
}
ログイン後にコピー

このコード スニペットは、条件ステートメント内の 2 つの関数呼び出しの結果を比較しようとしています。ただし、コンパイルに失敗し、次のエラーが生成されます。

./test4.go:4: sumThis(1, 2) used as value
./test4.go:4: sumThis(3, 4) used as value
./test4.go:11: too many arguments to return
ログイン後にコピー

このエラーは、sumThis 関数の戻り値の型がないことが原因で発生します。戻り値の型を省略すると、Go は関数が void を返すものとして解釈します。その後、関数呼び出しを条件ステートメントの値として使用しようとすると、コンパイラは戻り値の型を検出せず、呼び出しを戻り値ではなく副作用のために使用されるものとして扱います。

この問題を解決するには、次のようにします。関数の戻り値の型を明示的に宣言する必要があります。この場合、sumThis 関数は整数を返すため、その署名は次のようになります。

func sumThis(a, b int) int {
    // ...
}
ログイン後にコピー

正しい関数署名があれば、コードは正常にコンパイルされ、内部の関数呼び出しの戻り値が正しく比較されます。条件文。

以上がGo の条件文で関数呼び出しを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート