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