条件语句中的函数求值
条件语句通常需要在其条件内求值函数。然而,当尝试使用函数调用作为此类语句中的值时,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 }
此代码片段尝试比较条件语句中两个函数调用的结果。但是,它无法编译,并产生以下错误:
./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中文网其他相关文章!