Golang syntax error : assignment mismatch: 4 variables but 2 values
Golang syntax error : assignment mismatch: 4 variables but 2 values
下面的代码产生编译错误。
在与这个错误纠缠了几个小时之后,我仍然不知道该怎么办。
这是一个产生相同错误的简化示例:
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 块。
有什么办法可以解决这个问题吗?
这是语言规范中的相关部分:
https://golang.org/ref/spec#Assignments
简而言之:
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 {
}
}
下面的代码产生编译错误。
在与这个错误纠缠了几个小时之后,我仍然不知道该怎么办。
这是一个产生相同错误的简化示例:
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 块。 有什么办法可以解决这个问题吗?
这是语言规范中的相关部分:
https://golang.org/ref/spec#Assignments
简而言之:
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 {
}
}