> 백엔드 개발 > Golang > Go에 같은 이름의 지역 변수가 있는 경우 패키지 수준 상수 또는 변수에 액세스하는 방법은 무엇입니까?

Go에 같은 이름의 지역 변수가 있는 경우 패키지 수준 상수 또는 변수에 액세스하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-16 11:21:03
원래의
907명이 탐색했습니다.

How to Access Package-Level Constants or Variables When a Local Variable with the Same Name Exists in Go?

함수 수준 변수보다 상수 또는 패키지 수준 변수 참조

Go에서는 변수 범위에 따라 다양한 코드 블록 내에서의 접근성이 결정됩니다. 지역 변수와 최상위 상수 또는 패키지 수준 변수가 동일한 이름을 공유하는 경우 일반적인 문제가 발생합니다. 로컬 변수 대신 상수 또는 패키지 수준 변수를 참조하는 방법은 무엇입니까?

문제

다음 Go 프로그램을 고려해 보세요.

package main

import "fmt"

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

func main() {
    name := "Jobs"
    fmt.Println(name)
}
로그인 후 복사

이 프로그램은 패키지 수준에서 상수 이름을 선언하지만 기본 함수 내에서는 name이라는 또 다른 변수가 있습니다. 함수 수준에서 선언되었습니다. 프로그램이 실행되면 로컬 함수 수준 변수 이름의 값인 "Jobs"가 인쇄됩니다. 대신 패키지 수준 상수 이름에 어떻게 액세스할 수 있나요?

직접 참조 없음

안타깝게도 Go는 블록 범위 내에서 최상위 식별자를 참조하는 직접적인 방법을 제공하지 않습니다. 같은 이름의 지역 변수가 존재합니다. 선언 및 범위에 대한 Go 사양에 따라 해당 범위 내에서 로컬로 선언된 식별자가 우선 적용됩니다.

해결 방법

최상위 변수와 로컬 변수에 모두 액세스하려면 다음을 사용할 수 있습니다. 다른 이름을 사용하거나 다음 해결 방법 중 하나를 사용하세요.

최상위 값 저장 첫 번째

cname := name
name := "Jobs"
fmt.Println(name)
fmt.Println(cname)
로그인 후 복사

지역 변수를 생성하기 전에 최상위 상수나 변수의 값을 저장하는 방법입니다.

함수를 사용하여 최상위 값에 접근

func getName() string {
    return name
}

name := "Jobs"
fmt.Println(name)
fmt.Println(getName())
로그인 후 복사

이 접근 방식은 해당 변수를 반환하는 함수를 정의하여 최상위 변수에 액세스하는 대체 방법을 제공합니다. value.

출력

두 메소드 모두 동일한 출력을 반환합니다.

Jobs
Yosua
로그인 후 복사

이는 로컬 변수를 계속 사용하면서 최상위 변수에 액세스할 수 있음을 보여줍니다. 다음 해결 방법 중 하나를 사용하여 동일한 이름을 사용하세요. 그러나 지역 변수는 해당 범위 내에서 최상위 식별자보다 우선한다는 점을 기억하는 것이 중요합니다.

위 내용은 Go에 같은 이름의 지역 변수가 있는 경우 패키지 수준 상수 또는 변수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿