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。

所以在上面的陈述中,你正在做两件事。

  1. 声明你的variables是myArray
  2. 您正在为myArrayvariables分配一个整数数组。

你的代码的第二部分失败,因为你在这里做什么:

 myArray :=[...]int{11,12,14} //error pointing on this line 

重新声明现有variablesmyArray,它已经包含整数值。

这工作:

 myArray = [...]int{11,12,14} //error pointing on this line 

因为它将整数数组分配给现有的(预先声明/初始化的)variables。