최근에 저는 구글의 새로운 프로그래밍 언어 인 Go를 가지고 놀았습니다.
할당 연산자 :=
가 등호 앞에 콜론이있는 이유가 궁금 =
했습니다. 언어 작성자가 name := "John"
대신 사용하려는 특별한 이유가 있습니까?name = "John"
최근에 저는 구글의 새로운 프로그래밍 언어 인 Go를 가지고 놀았습니다.
할당 연산자 :=
가 등호 앞에 콜론이있는 이유가 궁금 =
했습니다. 언어 작성자가 name := "John"
대신 사용하려는 특별한 이유가 있습니까?name = "John"
답변:
name := "John"
단지 구문상의 설탕입니다.
var name string
name = "John"
Go는 정적으로 형식화되어 있으므로 변수를 선언해야합니다.
name := "John"
는 var name = "John"
.
var name = "John"
짧은 위해 var name string = "John"
어떤 주어진 두 라인 짧다.
"var" IdentifierList = ExpressionList .
".
:=
할당 연산자가 아닙니다. 짧은 변수 선언입니다. =
할당 연산자입니다.
짧은 변수 선언은 다음 구문을 사용합니다.
ShortVarDecl = IdentifierList ":=" ExpressionList .
이니셜 라이저 표현식이 있지만 유형이없는 정규 변수 선언의 속기입니다.
"var" IdentifierList = ExpressionList .
Assignment = ExpressionList assign_op ExpressionList .
assign_op = [ add_op | mul_op ] "=" .
이동에 name := "John"
대한 속기 var name = "John"
.
Rob Pike 는 Go의 :=
"Origins of Go"(2010) 강연에서 Go의 이유를 설명합니다 .
:=
Newsquek (1989)라고하는 Pike가 코드 서명 한 다른 언어의 의사 연산자였습니다. Pascal-ish 표기법과 관용구 선언 및 초기화를위한 유형을 추론 할 수있는 기능 ( 15 페이지 )
// variable: [type] = value
x: int = 1
x := 1
한계 메모 : Robert Griesemer 는 :=
"Go에서 꺼내는 것은 무엇입니까?"라는 질문에 대답하는 운영자를 불러옵니다. Google I / O 2013에서 QA 세션 중에 . 편리하지만 문제가 있다고 언급했습니다 .
답변에 대한 중요한 배경 :
:=
변수 초기화를위한 속기 연산자입니다. 에서 이동 , 다음 작업은 동일합니다 :
var myNumb String = "one"
myNumb := "one"
대답:
이제 내포 된 질문은 "왜 ? :=
가 :
앞에있는 속기 표기법 을 디자인 =
했는가?"입니다. 그 이유는 만연한 오타를 방지하기 위함입니다. 속기 할당 연산자가 just =
이면 다음과 같은 상황이 발생할 수 있습니다.
var myNumb String = "one"
myNumb = "two"
이제 코드를 생성 한 사용자는 재 할당하려는 않았다 two
으로 myNumb
, 또는 그 잘못 입력 않았다 myNumb
올바르게 입력하는 대신 myNumbTwo
? 에 콜론을 포함하면 :=
프로그래머는 var
버그를 가지기 위해 두 개의 오류 (콜론은 잊어 버리고는 잊어 버림)를 커밋 해야하므로 그렇게 할 가능성이 크게 줄어 듭니다 .