>백엔드 개발 >Golang >Go에서 지역 변수에 의해 숨겨질 때 상수 및 패키지 수준 변수에 액세스하는 방법은 무엇입니까?

Go에서 지역 변수에 의해 숨겨질 때 상수 및 패키지 수준 변수에 액세스하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-14 22:33:02758검색

How to Access Constants and Package-Level Variables When Shadowed by Local Variables in Go?

함수 내부의 상수 및 패키지 수준 변수 참조

제공된 Go 코드의 기본 함수 내에는 상수를 숨기는 로컬 변수 이름이 정의되어 있습니다. 또는 동일한 이름을 가진 패키지 수준 변수입니다. 이로 인해 혼란과 잘못된 동작이 발생할 수 있습니다.

섀도잉 이해

Go에서는 새 변수가 함수 내에서 선언되면 함수에 정의된 동일한 이름을 가진 다른 변수보다 우선합니다. 더 높은 수준(예: 패키지 수준 범위) 이를 변수 섀도잉이라고 합니다.

해결

메인 함수 내에서 상수 또는 패키지 수준의 변수 이름을 참조할 때 식별자 이름은 함수를 나타내기 때문에 직접 사용할 수 없습니다. -레벨 변수. 대신 다음 접근 방식 중 하나를 사용할 수 있습니다.

  • 상수 또는 변수 값 저장: 상수 또는 패키지 수준 변수의 값을 임시로 로컬에 저장할 수 있습니다. 다른 이름의 변수입니다. 예:
const name = "Yosua"

func main() {
    localName := name
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(localName) // Yosua
}
  • Getter 함수 제공: 상수 또는 패키지 수준 변수의 값을 반환하는 함수를 생성할 수 있습니다. 예:
const name = "Yosua"

func getName() string {
    return name
}

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

참고

const 대신 var를 사용하여 패키지 수준 변수를 선언하면 함수 내에서 해당 변수를 숨기고 재할당할 수 있습니다. 이러한 경우 위의 접근 방식 중 하나를 사용하면 원래 값이 보존됩니다.

위 내용은 Go에서 지역 변수에 의해 숨겨질 때 상수 및 패키지 수준 변수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.