switch문 기본적인 사용 방법을 알아보겠습니다.
조건문을 사용하기 위해 if문을 사용하지만 switch를 사용해 작성하는 경우도 많이 있습니다.
switch 사용 방법
자바처럼 case를 같이 사용하지만 break; 를 작성해주지 않아도 됩니다.
switch 기본 예제
package main
import "fmt"
func main() {
n := 2
switch n {
case 3:
fmt.Println("n is ", n)
case 2:
fmt.Println("n is ", n)
case 1:
fmt.Println("n is ", n)
}
}
결과
n is 2
case에 작성한 조건에 만족하는 처리만 하고 종료됩니다.
문자열을 사용해서도 확인해보겠습니다.
switch 문자열 예제
package main
import "fmt"
func main() {
str := "blue"
switch str {
case "red":
fmt.Println("Stop")
case "yellow":
fmt.Println("caution")
case "green", "blue":
fmt.Println("Go")
default:
fmt.Println("wrong")
}
}
결과
Go
문자열 타입도 사용방법은 같습니다.
위 예제에서는 case에 조건을 여러개 작성을 했습니다.
case “green”, “blue”:
조건을 여러개 작성하고 싶은 경우에는 ,(콤마)를 사용해 열거해주면 됩니다.
예제에서는 값이 green 또는 blue 일 경우에 Go를 출력하게 됩니다.
switch ~ case
switch ~ case를 if ~ else 처럼도 사용할 수 있습니다.
switch 응용 예제
package main
import "fmt"
func main() {
// if~else 처럼 사용
score := 82
switch {
case score > 60 && score < 70:
fmt.Println("Good!")
case score > 70 && score < 80:
fmt.Println("Great!")
case score > 80:
fmt.Println("Fantastic!")
default:
fmt.Println("Bad")
}
}
case 문에 if 문 처럼 조건식을 작성해 여러 조건은 만들었습니다.
switch fallthrough
이번에는 fallthrough에 대해 살펴보겠습니다.
fallthrough를 사용하면 자바에서 break;를 작성하지 않은 거처럼 비슷한 동작을 하게 됩니다.
switch fallthrough 예제
package main
import "fmt"
func main() {
cnt := 6
switch cnt {
case 4:
fmt.Println("was <= 4")
fallthrough
case 5:
fmt.Println("was <= 5")
fallthrough
case 6:
fmt.Println("was <= 6")
fallthrough
case 7:
fmt.Println("was <= 7")
fallthrough
case 8:
fmt.Println("was <= 8")
fallthrough
default:
fmt.Println("default case")
}
}
결과
was <= 6
was <= 7
was <= 8
default case
결과를 보면 case 6:과 조건이 일치하기 때문에 was <= 6 를 출력하고 있습니다.
그리고 그다음 조건에 작성한 문자열도 전부 출력하고 있습니다.
이유는 fallthrough를 지정하면 그다음 case문에 작성한 조건문을 무시해 버리기 때문입니다.
switch fallthrough 응용 예제
package main
import "fmt"
func main() {
score := 3
switch score {
case 3:
score *= 100
fallthrough
case 2:
fmt.Println(score)
case 1:
fmt.Println(score*10)
}
}
결과
300
변수 score에는 3이라는 값이 들어있기 때문에 case 3: 에서 곱하기 100을 합니다.
그리고 fallthrough가 작성되어 있기 때문에 다음 조건문인 case 2: 를 무시하고 결과를 출력합니다.
하지만 case 2: 에는 출력하는 처리만 있고 fallthrough는 작성하지 않았기 때문에 case 1: 은 실행하지 않습니다.
fallthrough를 사용하지 않고 switch문을 작성하면 아래처럼 만들 수 있습니다.
package main
import "fmt"
func main() {
score := 3
switch score {
case 3, 2:
if score == 3 {
score *= 100
}
fmt.Println(score)
case 1:
fmt.Println(score*10)
}
}
결과
300
fallthrough를 사용한 방법과 결과는 같습니다.
어떤 것이 정답이라고는 할 수 없습니다.
상황에 맞게 사용을 해주면 되겠습니다.
정리
switch 조건문의 기본적인 사용방법과 간단한 응용방법을 알아봤습니다.
작성 방법에 따라 if문 처럼도 사용할 수 있습니다.
그리고 case문에는 break를 작성하지 않아도 종료됩니다.
댓글