We are Architect

Switch (12) 본문

Programing/Go

Switch (12)

the best infra 2025. 1. 12. 16:45

 

* Switch 문?

  • 조건문이며 값을 검사한다. 
  • 값이 같으면 문장을 실행한다.
switch 비굣값 {
	case 값1:
    	문장
	case 값2:
    	문장
	default:
		문장
}

 

 

* switch 문 예제 1

package main

import "fmt"

func main() {
	a := 3
    
	switch a {
    	case 1:
        	fmt.Println("a == 1")
		case 2:
        	fmt.Println("a == 2")
		case 3:
        	fmt.Println("a == 3")
		default:
        	fmt.Println("a != 1,2,3")
    }
}
  • 실행된 값

 

 

* Switch 문을 왜 쓰는가?

  • 일단 보기가 좋다.
  • 값이 중요하면 switch 문을 쓰는 게 좋다.
  • , 를 사용하면 한번에 여러 값을 검사하기 좋다. 
  • default : case에 해당하는 값이 없을 경우 실행되는 기본 코드 블록.
  • default 값까지 검사하고 없으면 문장을 빠져나간다.

 

* switch 문 예제 2

package main

import "fmt"

func getMyAge() int {
	return 22
}

func main() {
	switch age := getMyAge(); age {
    	case 10:
        	fmt.Println("Teenage")
    	case 33:
        	fmt.Println("Pair 3")
    	dafault:
        	fmt.Println("My age is", age)
    }
    
    fmt.Println("age is", age) // 에러가 발생, a값이 switch 문 안에서만 적용 되있기 때문
}

 

 

* case 문과 열거값

package main

import "fmt"

// type: 새로운 타입을 만드는 함수
// ColorType : 별칭
// int : 자료형
type ColorType int 
const (
	Red ColorType = iota
    Blue
    Green
    yellow
)

func colorToString(color ColorType) string {
	switch color {
    case Red:
    	return "Red"
	case Blue:
    	return "Blue"
	case Green:
    	return "Green"
	case yellow:
    	return "yellow"
	default:
    	return "Undefined.."
    }
	
}

func getMyFavoriteColor() ColorType {
	return Red
}

func main() {
	fmt.Println("My favorite color is", colorToString(func getMyFavoriteColor()))
}

 

  • 결과 값 반환

 

 

* Break fallthrough

  • 밑에 있는 case도 출력하고 싶을 때 사용.
  • go에만 있는 용어다. 왜냐면 go는 break를 안 써도 되니까.
package main

import "fmt"

func main() {
    
	a := 3
    
	switch a {
    case 1:
    	println("a==1")
    case 2:
    	println("a==2")
    case 3:
    	println("a==3")
        fallthrough
    case 4:
    	println("a==4")
    default:
    	println("a != 1,2,3,4")
    }

}

 

  • 결과 출력 값

'Programing > Go' 카테고리의 다른 글

if 문(11)  (0) 2025.01.11
상수(10)  (0) 2025.01.10
함수(9)  (0) 2025.01.09
연산자(8)  (0) 2025.01.08
fmt 패키지를 통한 표준 입출력(7)  (0) 2025.01.06