English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
필수 조건:Go 언어 변수
변수의 범위는 특정 변수에 접근할 수 있는 프로그램의 일부로 정의될 수 있습니다. 클래스, 메서드, 루프 등에서 변수를 정의할 수 있습니다. C와 마찬가지로 / C ++같습니다Golang에서는 모든 식별자가 레퍼런스적(또는 정적) 범위를 가지고 있으며, 즉 변수의 범위는 컴파일 시에 결정될 수 있습니다. 또는 다른 말로 하면, 변수는 정의된 코드 블록에서만 호출될 수 있습니다.
Golang 변수의 범위 규칙은 변수가 선언된 위치에 따라 두 가지로 나눌 수 있습니다:
지역 변수(블록이나 함수 내부에서 선언)
전역 변수(블록이나 함수 외부에서 선언)
함수나 블록 내에서 선언된 변수는 지역 변수라고 합니다. 이들은 함수나 블록 밖에서 접근할 수 없습니다.
이 변수들은 함수 내부의 for, while 문 등 내부 문장에서도 선언할 수 있습니다.
그러나 이러한 변수는 함수 내의 중첩 코드 블록에 의해 접근될 수 있습니다.
이러한 변수는 블록 변수라고도 합니다.
동일한 이름으로 이러한 변수를 동일한 범위에서 두 번 선언하면 컴파일 시에 오류가 발생합니다.
함수가 실행되고 나면 이러한 변수는 존재하지 않습니다.
루프 밖에 정의된 변수는 중첩 루프 내에서도 접근할 수 있습니다. 이는 모든 메서드와 루프가 전역 변수를 접근할 수 있다는 의미입니다. 지역 변수는 루프에서 접근되고 그 함수 내에서 실행됩니다.
루프 내에 정의된 변수는 루프 밖에서는 접근할 수 없습니다.
//지역 변수 package main import "fmt" //메인 함수 func main() { //이곳부터 메인 함수의 지역 범위가 시작됩니다 //메인 함수 내의 지역 변수 var myvariable1, myvariable2 int = 69, 145 // 변수의 값을 표시 fmt.Printf("myvariable1 변수의 값 : %d\n", myvariable1) fmt.Printf("myvariable2 변수의 값 : %d\n", myvariable2) } // 여기서 메인 함수의 지역 범위가 끝납니다
출력:
myvariable1 변수의 값 : 69 myvariable2 변수의 값 : 145
함수나 블록 밖에 정의된 변수는 전역 변수라고 합니다.
이는 프로그램의 전체 라이프사이클 동안 사용할 수 있습니다.
이는 모든 함수나 블록 밖의 프로그램의 상단에 선언됩니다.
이는 프로그램의 어떤 부분에서든 접근할 수 있습니다.
//전역 변수 package main import "fmt" // 전역 변수 선언 var myvariable1 int = 100 func main() { // 메인 함수 내의 지역 변수 var myvariable2 int = 200 //전역 변수 표시 fmt.Printf("전역 변수 myvariable1 의 값은 : %d\n", myvariable1) //지역 변수 표시 fmt.Printf("지역 변수 myvariable2 의 값은 : %d\n", myvariable2) //함수 호출 display() } func display() { // 전역 변수 표시 fmt.Printf("전역 변수 myvariable1 의 값은 : %d\n", myvariable1) }
출력:
전역 변수 myvariable1 의 값은 : 100 지역 변수 myvariable2 의 값은 : 200 전역 변수 myvariable1 의 값은 : 100
주의:함수 내에 전역 변수와同名의 지역 변수가 있는 경우 어떻게 될까요?
답은 간단합니다. 즉, 컴파일러는 지역 변수를 우선 선택합니다. 일반적으로 동일한 이름을 가진 두 개의 변수가 정의되면 컴파일러는 컴파일 시에 오류를 발생시킵니다. 그러나 변수가 다른 범위에서 정의되면 컴파일러는 그것을 허용합니다. 전역 변수와同名의 지역 변수가 정의되면 컴파일러는 그 지역 변수를 우선 고려합니다.
예제:아래의 프로그램에서 출력을 명확히 볼 수 있습니다. myvariable1의 값은200, 이는 함수 main에서 제공됩니다. 따라서 지역 변수가 전역 변수보다 높은 우선순위를 가질 수 있다고 말할 수 있습니다.
//Go 프로그램은 컴파일러의 우선순위를 표시합니다 //전역 변수 상의 지역 변수 package main import "fmt" //전역 변수 선언 var myvariable1 int = 100 func main() { //메인 함수 내의 지역 변수 //전역 변수와 같습니다 var myvariable1 int = 200 // 표시 fmt.Printf("변수 myvariable1 의 값은 : %d\n", myvariable1) }
출력:
변수 myvariable1 의 값은 : 200