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 중국어 웹사이트의 기타 관련 기사를 참조하세요!