갈루아의 반서재

이제 숫자 옆에 영문 이름도 같이 넣는 프로그램을 만들어보자. 현재까지의 지식으로는 다음과 같이 짤 수 있을 것이다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
if i == 0 {
  fmt.Println("Zero")
else if i == 1 {
  fmt.Println("One")
else if i == 2 {
  fmt.Println("Two")
else if i == 3 {
  fmt.Println("Three")
else if i == 4 {
  fmt.Println("Four")
else if i == 5 {
  fmt.Println("Five")
}
cs


이건 말도 안된다. switch 명령을 이용해보자. 다음과 같이 다시 작성할 수 있을 것이다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
import "fmt"
 
func main() {
    switch i {
        case 0: fmt.Println("Zero")
        case 1: fmt.Println("One")
        case 2: fmt.Println("Two")
        case 3: fmt.Println("Three")
        case 4: fmt.Println("Four")
        case 5: fmt.Println("Five")
        default: fmt.Println("Unknown Number")
    }
}
cs

switch 문은 switch 키워드가 먼저 나오고, 다음으로 식 (여기서는 i) 과 일련의 case 문이 나온다. 표현식의 값은 각각의 case 키워드와 비교하게 된다. 만약 둘의 값이 같으면 : 다음의 부분이 실행되는 것이다. 

if 문과 마찬가지로, 각각의 case 문 역시 위에서 아래로 한 줄씩 실행된다. switch 문은 일치하는 값이 없을 때 표현할 default 값을 지원한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import "fmt"
 
func main() {
for i := 0; i <= 10; i ++ {
    switch i {
        case 0: fmt.Println(i, "Zero")
        case 1: fmt.Println(i, "One")
        case 2: fmt.Println(i, "Two")
        case 3: fmt.Println(i, "Three")
        case 4: fmt.Println(i, "Four")
        case 5: fmt.Println(i, "Five")
        default: fmt.Println(i, "Unknown Number")
    }
  }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
:~/go/src/golang-book/chapter5# go run main.go
0 Zero
1 One
2 Two
3 Three
4 Four
5 Five
6 Unknown Number
7 Unknown Number
8 Unknown Number
9 Unknown Number
10 Unknown Number
 
cs