我试图使用两个函数初始化if块内的变量。这两个函数都返回一个布尔值和一个错误。我尝试过以下方法,但没有成功。有办法做我想做的事吗?
func returnAValueAndError() (bool, error) {
return true, nil
}
func alsoReturnAValueAndError() (bool, error) {
return false, nil
}
if a, _ := returnAValueAndError(), b, _ := alsoReturnAValueAndError(); a || b {
// this gives me
// ./prog.go:16:42: syntax error: unexpected :=, expecting {
}
if a, _ := returnAValueAndError(); b, _ := alsoReturnAValueAndError(); a || b {
// this gives me
// ./prog.go:16:42: syntax error: cannot use b, _ := alsoReturnAValueAndError() as value
// ./prog.go:17:38: syntax error: unexpected newline, expecting comma or }
}
if a, _, b, _ := returnAValueAndError(), alsoReturnAValueAndError(); a || b {
// this gives me
// ./prog.go:16:16: assignment mismatch: 4 variables but returnAValueAndError returns 2 values
// ./prog.go:16:39: multiple-value returnAValueAndError() in single-value context
// ./prog.go:16:67: multiple-value alsoReturnAValueAndError() in single-value context
}
你不能那样做。条件前面可以有一个简单的语句(而不是多个语句(:
https://golang.org/ref/spec#If_statements