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。