Go - 범위 규칙 이해: 변수 가시성
안녕하세요, 프로그래밍에 도전하는 여러분! 오늘 우리는 Go 프로그래밍의 세계로 흥미로운 여정을 떠납니다. 특히 범위 규칙에 대해 집중적으로 다룰 것입니다. 프로그래밍 초보자라면 걱정하지 마세요. 이 주제를 단계별로 안내해 드릴 테니까요. 시작해 보겠습니다!
범위란 무엇인가?
구체적인 내용에 들어가기 전에, 프로그래밍에서 "범위"라는 단어가 무엇을 의미하는지 이해해 보겠습니다. 집안에 여러 방이 있다고 상상해 보세요. 각 방은 프로그램의 다른 부분을 상징합니다. 변수의 범위는 그 변수를 볼 수고 사용할 수 있는 방(프로그램의 부분)을 결정합니다. 흥미롭지 않나요?
로컬 변수: 방 속의 비밀 보관함
로컬 변수란 무엇인가?
로컬 변수는 당신의 방에 보관한 개인 소지품과 같습니다. 특정 함수나 코드 블록 내에서만 접근할 수 있습니다.
예제 1: 함수 내의 로컬 변수
package main
import "fmt"
func main() {
// 로컬 변수 'message'
message := "Hello, Go!"
fmt.Println(message)
}
이 예제에서 message
는 로컬 변수입니다. 방(main
함수) 안에서는 읽을 수 있지만, 밖으로 나가면 사라집니다!
예제 2: 블록 범위
package main
import "fmt"
func main() {
if true {
// 로컬 변수 'secretCode'
secretCode := 1234
fmt.Println("The secret code is:", secretCode)
}
// 다음 줄을 해제하면 오류가 발생합니다
// fmt.Println(secretCode)
}
여기서 secretCode
는 방 안의 책상 위에 숨겨둔 일기와 같습니다. 특정 "if" 블록 내에서만 접근할 수 있습니다.
글로벌 변수: 집 안의 인터콤
글로벌 변수란 무엇인가?
글로벌 변수는 집 안의 인터콤 시스템과 같습니다. 프로그램의 모든 방(함수)에서 접근할 수 있습니다.
예제 3: 글로벌 변수
package main
import "fmt"
// 글로벌 변수
var globalMessage = "I'm accessible everywhere!"
func main() {
fmt.Println(globalMessage)
changeMessage()
fmt.Println(globalMessage)
}
func changeMessage() {
globalMessage = "I've been changed!"
}
이 예제에서 globalMessage
는 집 안의 인터콤을 통해 전달된 알림과 같습니다. 모든 함수에서 듣고 심지어 변경할 수 있습니다!
형식 매개변수: 이름표를 단 손님
형식 매개변수란 무엇인가?
형식 매개변수는 방에 초대한 손님과 같습니다. 각 손님은 이름표를 차고, 함수 내에서는 로컬 변수로 취급됩니다.
예제 4: 함수 매개변수
package main
import "fmt"
func greet(name string, age int) {
fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
}
func main() {
greet("Alice", 25)
greet("Bob", 30)
}
여기서 name
과 age
는 방(greet
함수)에 방문한 손님(매개변수)입니다. 외부에서 가져온 정보를 가지고 있지만, 함수 내에서만 알고 있습니다.
로컬과 글로벌 변수 초기화: 집을 꾸미는 것
로컬 변수 초기화
로컬 변수는 방에 들이는 물건과 같습니다. 사용하기 전에 값을 주어야 합니다(초기화).
func localInit() {
var x int // 선언되었지만 초기화되지 않음
x = 10 // 초기화
y := 20 // 한 줄로 선언하고 초기화
fmt.Println(x, y)
}
글로벌 변수 초기화
글로벌 변수는 집안의 공용 물건과 같습니다. 초기화하지 않으면 자동으로 기본값으로 초기화됩니다.
package main
import "fmt"
var (
globalInt int
globalString string
globalBool bool
)
func main() {
fmt.Println(globalInt, globalString, globalBool)
// 출력: 0 false
}
범위 규칙 팁시트
이제 배운 범위 규칙을 요약한 표를 제공합니다:
변수 유형 | 범위 | 초기화 | 예제 |
---|---|---|---|
로컬 변수 | 함수 또는 블록 | 사용 전에 초기화해야함 | x := 10 |
글로벌 변수 | 전체 패키지 | 자동으로 기본값으로 초기화 | var globalX int |
형식 매개변수 | 함수 | 함수 호출 시 초기화 | func (x int) |
결론: 프로그래밍의 집
Go에서 범위를 이해하는 것은 프로그래밍의 집 구조를 알고 있는 것과 같습니다. 로컬 변수는 개인 소지품, 글로벌 변수는 집 안의 인터콤, 매개변수는 초대한 손님입니다. 이 개념을 마스터하면 Go 프로그래머로서의 실력을 키우는 데 도움이 될 것입니다!
기억하세요, 연습이 완성입니다. 이 개념을 탐구하는 작은 프로그램을 작성해 보세요. 실수는 성공의 단계입니다. 행복하게 코딩하세요, 미래의 Go 전문가 여러분!
Credits: Image by storyset