`if` 문에서의 변수 섀도잉
Coddy GO 여정의 기초 섹션에 포함된 레슨 — 109개 중 37번째.
if 문에서의 변수 섀도잉(variable shadowing)에 대해 배워봅시다. 이를 통해 if 블록과 그에 관련된 else 블록 내에서만 존재하는 변수를 생성할 수 있습니다.
먼저, 조건문 외부에서 변수를 생성해 보겠습니다:
x := 10
fmt.Println("Original x value:", x)이 코드를 실행한 후, 우리는 프로그램 전체에서 사용할 수 있는 값 10을 가진 변수 x를 갖게 됩니다.
이제 if 문에서 변수 섀도잉(variable shadowing)을 사용하여 해당 블록 내에서만 존재하는 새 변수를 만들어 보겠습니다.
if y := x * 2; y > 15 {
fmt.Println("y is greater than 15:", y)
// y는 이 블록 내에서만 존재합니다.
} else {
fmt.Println("y is not greater than 15:", y)
// y는 else 블록에서도 사용할 수 있습니다.
}이 코드를 실행한 후, Go는 y를 20(x * 2)으로 계산하고, 15보다 큰지 확인한 다음 첫 번째 블록을 실행합니다. 화면에는 다음과 같은 출력이 표시됩니다:
y is greater than 15: 20마지막으로, if 문 이후에 변수에 접근해 보겠습니다:
// fmt.Println(y)는 에러를 발생시킵니다 - y는 여기서 존재하지 않습니다
fmt.Println("x is still:", x)이 코드를 실행한 후, 우리는 여전히 x에 접근할 수 있지만, y는 if 및 else 블록 내에서만 존재했기 때문에 더 이상 사용할 수 없습니다. 화면에는 다음과 같은 출력이 표시됩니다:
x is still: 10이것은 if 문에서 변수 섀도잉(variable shadowing)이 어떻게 작동하는지 보여줍니다. 변수 y는 선언된 조건부 블록 내에서만 접근할 수 있습니다.
챌린지
초급이 챌린지에서는 if 문에서의 변수 섀도잉(variable shadowing)을 연습합니다. if 블록 내부에서 선언된 변수가 외부 스코프의 변수와 동일한 이름을 가질 수 있지만, 서로 다른 값을 가질 수 있음을 확인하게 됩니다.
코드의 외부 스코프에 message 변수가 있습니다. 여러분의 과제는 if 블록 내부에 동일한 이름의 섀도잉된 변수를 생성한 다음, 두 변수를 모두 출력하여 섀도잉 효과를 확인하는 것입니다.
치트 시트
if 문에서의 변수 섀도잉(Variable shadowing)은 조건부 블록과 그와 관련된 else 블록 내에서만 존재하는 변수를 생성할 수 있게 해줍니다.
if 문에서의 변수 섀도잉 구문:
if variable := expression; condition {
// variable은 이 블록 내에서만 존재합니다
} else {
// variable은 else 블록에서도 사용할 수 있습니다
}예제:
x := 10
if y := x * 2; y > 15 {
fmt.Println("y is greater than 15:", y)
} else {
fmt.Println("y is not greater than 15:", y)
}
// y는 여기에서 더 이상 접근할 수 없습니다
fmt.Println("x is still:", x)섀도잉된 변수는 선언된 if 및 else 블록 내에서만 접근 가능하며, 블록 외부에서는 접근할 수 없습니다.
직접 해보기
package main
import "fmt"
func main() {
// 외부 범위 변수
message := "Hello from outer scope"
isLoggedIn := true
if isLoggedIn {
// TODO: "Hello from inner scope" 값을 가진 'message'라는 이름의 새 변수를 생성하세요
// 이것은 내부 범위 메시지를 출력합니다
fmt.Println(message)
}
// 이것은 외부 범위 메시지를 출력합니다
fmt.Println(message)
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
2변수와 기본 자료형
변수란 무엇인가`:=`를 이용한 타입 추론정수 (int)부동 소수점 수불리언 (Booleans)문자열 (Strings)제로 값 (Zero Values)상수명명 규칙요약 - 변수와 타입6제어 흐름: 조건문
`if` 문`else` 키워드`else if` 키워드`if` 문에서의 변수 섀도잉변수 초기화`switch` 문표현식이 있는 Switch표현식이 없는 Switch`fallthrough` 키워드요약 - 의사 결정하기