Golang:左侧没有新的variables:=
这里发生了什么事?
package main import "fmt" func main() { myArray :=[...]int{12,14,26} ; fmt.Println(myArray) myArray :=[...]int{11,12,14} //error pointing on this line fmt.Println(myArray) ; }
它会抛出一个错误,说
no new variables on left side of :=
我正在做的是重新赋值给一个已经声明的variables。
从第二条语句中删除colon :
,因为您正在为现有variables分配一个新值。
myArray = [...]int{11,12,14}
colon :
当你在你的第一个语句中进行第一次执行短的声明和赋值时使用,例如myArray :=[...]int{12,14,26}
。
go中有两种赋值运算符:=
和=
。 它们在语义上相当(就赋值而言),但第一个也是“短variables声明”( http://golang.org/ref/spec#Short_variable_declarations ),这意味着在左边我们至less需要一个新的variables声明是正确的。
你可以把第二个改成一个简单的赋值语句:=
– > =
或者如果你的algorithm没问题,你可以使用一个新的variables。
myArray :=[...]int{12,14,26}
正如前面的评论者所述, :=
是一种短手forms和/或variables声明的短forms。
所以在上面的陈述中,你正在做两件事。
- 你声明你的variables是myArray 。
- 您正在为myArrayvariables分配一个整数数组。
你的代码的第二部分失败,因为你在这里做什么:
myArray :=[...]int{11,12,14} //error pointing on this line
重新声明现有variablesmyArray,它已经包含整数值。
这工作:
myArray = [...]int{11,12,14} //error pointing on this line
因为它将整数数组分配给现有的(预先声明/初始化的)variables。