是否可以使用多返回值函数调用一次声明多个变量?
我想在for loop multiple variable initialization statement中使用它,但在Go中找不到这样做的方法。
例如,下面的代码段可以工作:
x := "foo"
y, z := fmt.Print("bar")
然而,当我尝试使用短声明语法x, y := "value1", "value2"
时,它失败了:
x, y, z := "foo", fmt.Print("bar")
正如我所理解的,编译器试图将函数的两个返回值都分配给第二个变量 y。
请告诉我在Golang中这是一种可能的情况,或者我可以在 for 循环初始化语句中使用什么替代方案。
2条答案
按热度按时间3bygqnnd1#
请告知这是一个可能的情况下,在戈朗
不不可能
根据官方语言规范,不允许在赋值中将多值表达式与其他多值或单值表达式组合。关于赋值语句的部分说:
有两种形式。在第一个例子中,右手操作数是单个多值表达式**,例如函数调用...在第二种形式中,左边的操作数必须等于右边的表达式的数量,每个表达式必须是单值的。
短变量声明是遵循上面引用的赋值语句规则的常规变量声明的简写。
我可以在
for
循环初始化语句中使用什么替代方法。您可以将这两条语句 Package 到一个返回3个值的自定义函数中,并在
for
循环的InitStmt
中使用该函数。举例来说:alen0pnh2#
根据文档,
fmt.Print
返回2个值。所以你不能分配这样的东西。以下是文档
下面的一个工作,因为你是分配2个值从fmt.Print返回。