`fallthrough`를 사용한 Switch 문
Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨. 68개 중 1번째.
Go에서는 switch 문이 일반적으로 일치하는 case만 실행한 다음 자동으로 종료됩니다. 그러나 fallthrough 키워드는 일치 여부와 관계없이 다음 case로 실행을 계속하도록 강제하여 이 동작을 변경합니다.
case 끝에서 fallthrough를 사용하면 Go는 조건을 확인하지 않고 다음 case의 코드를 실행합니다. 이는 fallthrough를 방지하려면 break가 필요한 C 같은 언어와 다릅니다.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}이 예제에서 grade가 "B"이면 fallthrough 문 때문에 "Good job!"과 "Keep trying!"을 모두 출력합니다. 이를 통해 일치하는 하나의 case에서 서로 관련된 여러 작업을 실행할 수 있습니다.
챌린지
쉬움이 챌린지에서는 switch 문에서 fallthrough 키워드를 사용해 우선순위 알림 시스템을 만드는 연습을 합니다. 높은 우선순위의 알림이 트리거되면 시스템은 여러 경고 메시지를 순서대로 표시해야 합니다.
알림 수준을 나타내는 문자열 입력을 받습니다. 여러 알림 수준을 처리하고, 우선순위가 높은 알림에 대해 연속된 메시지를 표시하도록 fallthrough를 사용하는 switch 문을 만드세요.
입력은 다음 알림 수준 중 하나입니다. "critical", "high", "medium" 또는 "low".
switch 문은 다음과 같이 작동해야 합니다.
"critical"인 경우: "CRITICAL: System shutdown imminent!"를 출력하고 high case로 fall through합니다(이 case는 차례로 medium으로 fall through합니다)."high"인 경우: "HIGH: Immediate attention required!"을 출력하고 medium 우선순위 메시지도 출력하도록 fall through합니다."medium"인 경우: "MEDIUM: Please review when possible"를 출력합니다."low"인 경우: "LOW: Informational only"를 출력합니다.
fallthrough가 연쇄적으로 이어지므로 "critical" 알림은 세 줄(CRITICAL, HIGH, MEDIUM)을 출력하고, "high" 알림은 두 줄(HIGH, MEDIUM)을 출력하며, "medium"과 "low"는 각각 한 줄을 출력합니다.
직접 해보기
package main
import "fmt"
func main() {
// 입력값 읽기
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: 아래에 코드를 작성하세요
// 경고 시스템을 위한 fallthrough가 있는 switch 문을 작성하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Go 컴파일러