go - 타이틀 - 지도 다중 마커




var vs:= 이동 있음 (2)

Go 프로그래밍 언어 사양

spec

짧은 변수 선언은 다음 구문을 사용합니다.

ShortVarDecl = IdentifierList ":=" ExpressionList .

짧은 변수 선언은 함수 내에서만 나타날 수 있습니다.

귀하의 예제에서 함수 본문 외부의 변수 선언 문 변경

var addr = flag.String("addr", ":1718", "http service address")

함수 본문 외부의 짧은 변수 선언문으로

addr := flag.String("addr", ":1718", "http service address")

컴파일러 오류 "함수 본문 외부의 선언되지 않은 문"과 함께 실패합니다.

Go 웹 서버 예제 : http://golang.org/doc/effective_go.html#web_server

다음 코드 행은 작동합니다.

var addr = flag.String("addr", ":1718", "http service address")

그러나 그것을 바꿔

addr := flag.String("addr", ":1718", "http service address")

컴파일 오류입니다. 왜? 함수의 리턴 타입이 *string 아닌 *string 인지 얼굴과 관련이 있습니까? 그게 무슨 차이가 있니?

업데이트 : 지적 해 주셔서 고마워요 := 최고 수준에서 허용되지 않습니다. 이 불일치가 왜 사양에 나와있는가? 블록 내에서 동작이 달라지는 이유는 없습니다.


Go에서 최상위 변수 지정에는 var 키워드가 접두어로 있어야합니다 . var 키워드를 생략하면 블록 내에서만 허용됩니다.

package main

var toplevel = "Hello world"         // var keyword is required

func F() {
        withinBlock := "Hello world" // var keyword is not required
}




colon-equals