2016-07-21 15 views
1
package main 

import "fmt" 

const name = "Yosua" 
// or var name string = "James" 

func main() { 
    name := "Jobs" 
    fmt.Println(name) 
} 

함수 수준 변수가 아닌 상수를 참조하는 방법은 무엇입니까?함수 수준 변수 대신 상수 또는 패키지 수준 변수 참조

+1

이 컴파일되지 않습니다. 나는 물어야한다, 왜 이것을하고 싶니? – squiguy

+0

아, 죄송합니다, 패키지 레벨 변수를 삭제하는 걸 깜빡해서 컴파일 할 수 없습니다. Golang이 할 수 있는지 확인하고 싶습니다. –

답변

6

수 없습니다. 로컬 변수 name이 범위 내에있는 동안 name이라는 이름은 로컬 변수를 나타냅니다. 최상위 식별자를 나타내는 "한정자"가 없습니다.

블록으로 선언하는 식별자

Spec: Declarations and scope:

이너 블록에 재 선언 될 수있다. 내부 선언의 식별자는 범위 내에 있지만 내부 선언에 의해 선언 된 엔티티를 나타냅니다.

최상위 상수/변수와 로컬 변수에 동시에 액세스해야하는 경우 다른 이름을 사용하십시오.

어떤 이유로 당신은 또는, 당신은 상수 또는 변수 먼저 최상위의 값을 절약 할 수 있습니다하지 않으 수없는 경우

cname := name 
name := "Jobs" 
fmt.Println(name) 
fmt.Println(cname) 

을 또는 당신은 그것을 액세스 할 수있는 다른 수단을 제공 할 수있다 , 예. 함수 : 두 경우 모두

func getName() string { 
    return name 
} 

name := "Jobs" 
fmt.Println(name) 
fmt.Println(getName()) 

출력합니다 (Go Playground 그들을 시도가) :

Jobs 
Yosua