Golang语法错误:赋值不匹配:4个变量但2个值
下面的代码产生编译错误 在与这个错误搏斗了几个小时之后,我仍然不知道该怎么处理这个问题 下面是一个产生相同错误的简化示例:Golang语法错误:赋值不匹配:4个变量但2个值,go,syntax-error,variable-assignment,Go,Syntax Error,Variable Assignment,下面的代码产生编译错误 在与这个错误搏斗了几个小时之后,我仍然不知道该怎么处理这个问题 下面是一个产生相同错误的简化示例: package main import( "fmt" ) func a() (int,bool) { return 3,true } func b() (int,bool) { return 4,true } func main(){ if k,ok1,h,ok2 := a(),b(); ok1 && ok2 &&a
package main
import(
"fmt"
)
func a() (int,bool) {
return 3,true
}
func b() (int,bool) {
return 4,true
}
func main(){
if k,ok1,h,ok2 := a(),b(); ok1 && ok2 && k==3 && h==4 {
fmt.Printf("ok!")
}else{
fmt.Printf("fail!")
}
}
显然,k,ok1,h,ok2:=a(),b()代码>导致此错误。
但我不知道该怎么做
修改此代码
由于某些原因,我无法将此赋值语句移出if-else块。
有什么办法可以解决这个问题吗?这是语言规范中的相关部分:
简言之:
k,ok1,h,ok2 := a(),b()
是无效的go语法。“…右侧操作数是单个多值表达式…”。在上面,您有两个表达式。你必须单独完成作业:
k, ok1:=a()
h, ok2:=b()
if语句变为:
if ok1 && ok2 && k==3 && h==4 {
}
如果不希望这些变量超出该范围,请执行以下操作:
{
k, ok1:=a()
h, ok2:=b()
if ok1 && ok2 && k==3 && h==4 {
}
}
如果允许的话,这将是危险的,因为它可能会导致微妙的错误。