Golang switch 조건문 사용 방법 예제

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를 작성하지 않아도 종료됩니다.

댓글