2012-11-11 3 views
53

여기에 무슨 일이 일어 났습니까?왼쪽에 새 변수가 없음 : =

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 := 

을 말한다 오류가 발생합니다.

답변

73

기존 변수에 새 값을 할당 할 때 두 번째 명령문에서 colon :을 제거하십시오. 당신이 즉 myArray :=[...]int{12,14,26} 첫 번째 문에 일을 당신이 처음으로 짧은 선언과 할당을 수행 할 때

myArray = [...]int{11,12,14} 

colon : 사용됩니다.

21

:==에는 두 가지 유형의 할당 연산자가 있습니다. 그것들은 의미 상으로 (할당과 관련하여) 동일하지만 첫 번째 변수는 "짧은 변수 선언"(http://golang.org/ref/spec#Short_variable_declarations)이기 때문에 왼쪽에 올바른 변수 선언이 최소한 있어야합니다.

두 번째를 간단한 할당 문 := ->=으로 변경하거나 알고리즘에 문제가없는 경우 새 변수를 사용할 수 있습니다.

이전 댓글 의해 명시된 바와
6
myArray :=[...]int{12,14,26} 

, := 짧은 손 및/또는 변수 선언 의 짧은 형태의 유형이다.

위의 내용에서 당신은 두 가지 일을합니다.

  1. 당신은 에서 myArray 당신의 변수를 선언합니다.
  2. 정수 배열을 myArray 변수에 할당합니다. 당신이 여기에서 무엇을하고 있는지 때문에

코드의 두 번째 부분은, 실패

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

것은 이미 정수 값을 포함하는 기존 변수에 myArray을, RE-선언입니다.

이 작동 : 그것은 기존 (미리 선언/초기화) 변수로 정수 배열을 할당이다

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

때문에.

관련 문제