Go 제어 구문(Control statement)

Go If 문 (if), Switch 문(switch), For 문(for)

If 문(if)

if 조건 { 처리 }는 조건이 참일 때만 처리를 수행한다. 조건을 괄호(...)로 묶을 필요는 없다. 처리문은 중괄호{ ... }로는 묶는 것은 필수이다.

if x > y {
    fmt.Println("x is greater then y")
}

else 또는 else if를 사용할 수 있다.

if x > y {
    fmt.Println("Big")
} else if x < y {
    fmt.Println("Small")
} else {
    fmt.Println("Equal")
}

Switch 문(switch)

switch 식 { ... }은 식의 값에 따라 처리를 나눈다.

switch mode { 
case "running":
    fmt.Println("실행 중")
case "stop":
    fmt.Println("정지 중")
default:
    fmt.Println("알 수 없음")
}

switch { ... } 에서는 case문으로 조건을 기술할 수도 있다.

switch {
case x > y:
    fmt.Println("Big")
case x < y:
    fmt.Println("Small")
default:
    fmt.Println("Equal")
}

다른 언어와 같이 break문은 필요하지 않다. 반대로 다음 조건의 처리도 수행하려면 fallthrough를 사용한다.

아래 예제는 dayOfWeek"Sat" 또는 "Sun"이면 "Horiday"를 출력한다.

switch dayOfWeek {
case "Sat":
    fallthrough
case "Sun":
    fmt.Println("Horiday")
default:
    fmt.Println("Weekday")
}

For 문(for)

Go 언어에는 while 문이 없으며 ,반복 처리는 모두 for를 사용한다.

아래의 예는 x 가 y 보다 작은 동안 처리를 반복한다.

for x < y {
    x++
}

for 시작 처리; 조건; 후처리 { 처리 }는 먼저 시작 처리를 수행하고, 조건이 참인 동안 처리와 후처리를 반복하여 실행한다.

for i := 0; i < 10; i++ {
    fmt.Println(i)
}

조건을 생략하면 무한 루프가 된다. continue는 다음 루프를 반복한다. break는 루프를 빠져 나간다.

package main

import "fmt"

func main() {
	n := 0
	for {
		n++
		if n > 10 {
			break
		} else if n%2 == 1 {
			continue
		} else {
			fmt.Println(n)
		}
	}
}

출력 결과:

2
4
6
8
10

배열이나 슬라이스 등 이터러블한 것에 대해서는 range를 이용해 루프 처리할 수 있다.

package main

import "fmt"

func main() {
	colors := [...]string{"Red", "Green", "Blue"}

	for i, color := range colors {
		fmt.Printf("%d: %s\n", i, color)
	}
}

출력 결과:

0: Red
1: Green
2: Blue



최종 수정 : 2023-03-26