条件文での関数の評価
条件文では、多くの場合、条件内の関数を評価する必要があります。ただし、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 サイトの他の関連記事を参照してください。