다른 언어들처럼 Go도 switch문을 제공해요.
switch문은 긴 if ... else if문을 더 짧게 쓸 수 있는 방법이에요.
switch문을 만들려면 먼저 switch 키워드를 쓰고 그 뒤에 값이나 식을 적어요.
그다음에는 각 조건을 case 키워드로 선언해요.
앞의 case 조건 중 어디에도 해당하지 않을 때 실행되는 default 케이스도 선언할 수 있어요.
operatingSystem := "windows"
switch operatingSystem {
case "windows":
// do something if the operating system is windows
case "linux":
// do something if the operating system is linux
case "macos":
// do something if the operating system is macos
default:
// do something if the operating system is none of the above
}
switch문에서 흥미로운 점은 switch 키워드 뒤의 값을 생략할 수 있고, 각 case마다 불리언 조건을 쓸 수 있다는 거예요.
age := 21
switch {
case age > 20 && age < 30:
// do something if age is between 20 and 30
case age == 10:
// do something if age is equal to 10
default:
// do something else for every other case
}
이번 연습 문제에서는 블랙잭 게임의 첫 턴을 시뮬레이션해요.
두 장의 카드를 받고, 딜러의 앞면 카드를 볼 수 있어요. 모든 카드는 "ace", "king", "three", "two" 등과 같은 문자열로 표현해요. 각 카드의 값은 다음과 같아요:
| 카드 | 값 | 카드 | 값 |
|---|---|---|---|
| ace | 11 | eight | 8 |
| two | 2 | nine | 9 |
| three | 3 | ten | 10 |
| four | 4 | jack | 10 |
| five | 5 | queen | 10 |
| six | 6 | king | 10 |
| seven | 7 | 기타 | 0 |
참고: 일반적으로 ace는 1 또는 11의 값을 가질 수 있지만, 단순화를 위해 여기서는 11의 값만 가진다고 가정해요.
두 장의 카드와 딜러의 카드에 따라, 게임의 첫 턴에 대한 전략이 있는데, 다음과 같은 선택지가 있어요:
아직 최적은 아니지만, 친구 Alex가 개발해 온 전략을 따라요. 그 전략은 다음과 같아요:
카드의 숫자 값을 계산하는 함수를 구현해 봐요:
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
위에서 설명한 결정 로직을 구현하는 함수를 작성해 봐요:
func FirstTurn(card1, card2, dealerCard string) string
다음은 예상 결과의 몇 가지 예시예요:
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Exercism에 가입하고 Go 트랙을 개념 35개연습 문제 167개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.