[Tucker의 Go 언어 프로그래밍] 10장 switch문

Coen·2023년 10월 3일
1

tucker-go

목록 보기
7/18
post-thumbnail

이 글은 골든래빗 《Tucker의 Go 언어 프로그래밍》의 10장 써머리입니다.

10장 switch문

10.1 switch문 동작 원리

  • switch문은 값에 따라 다른 로직을 수행할 때 사용한다.
switch 비굣값 {
case 값1:
	// logic
case 값2:
	// logic
defulat:
	// logic
}
  • switch문은 첫 번째 case부터 값을 검사한다.
  • 다른 언어와 다르게 따로 break를 선언하지 않아도 case 내부 로직을 실행하면 종료된다.

10.2 switch문을 언제 쓰는가?

  • 복잡한 if else문을 대신하여 정리 가능
  • if else보다 더 가독성이 좋은 경우가 많다.

10.3 다양한 switch문 형태

10.3.1 한 번에 여러 값 비교

func days(day string) {
	switch day {
    case "monday", "tuesday":
    	fmt.Println("월, 화 알바가는 날")
    case "wednesday", "thursday", "friday":
    	fmt.Println("수, 목, 금 학원가는 날")
    default:
    	fmt.Println("주말")
    }
}

10.3.2 조건문 비교

test := 20
switch true {
case test > 10, test < 20:
	fmt.Println("case1")
case test >= 10 && asdfTest():
	fmt.Println("case2")
}

10.3.3 switch 초기문

switch 초기문; 비교값 {
case 값1:
	...
case 값2:
	...
default:
	...
}

10.4 const 열거값과 switch

  • const 열거값에 따라 switch를 사용하는 경우가 왕왕 있다.
type ColorType int
const (
	Red ColorType = iota
    Blue
    Green
)

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

10.5 break와 fallthrough 키워드

  • 다른 언어와는 다르게 golang의 switch문은 break를 사용하지 않아도 하나의 case 실행 이후 switch를 빠져나가게 된다.

  • 하지만 직관적으로 사용하고 싶다면 break를 넣어도 문제될것은 없다.

  • case를 실행한 후 fallthrough를 만나면 다음 케이스를 만족하지 않아도 무조건 실행한다.

test := 20
switch test {
case 20:
	fmt.Print("case1")
	fallthrough
case 100:
	fmt.Print("case2")
} // case1case2 출력됨
profile
백엔드 프로그래머

0개의 댓글