반응형
Go 제어문
I. If 문
- boolean 검사만 가능 (명시적으로 True/False가 나오도록 구현)
- 소괄호 사용 X
1. 기본 사용법
func main() {
if 조건1 {
실행1
} else if 조건2 {
실행2
} else {
실행3
}
2. 주의사항
괄호 줄 바꿈 금지
go는 바이트코드로 바꾸며 자동으로 세미콜론을 붙이는데, 이때 줄 바꿈을 하는 경우if (조건); {실행} ;
과 같이 인식되기 때문func main() { a := 10 if a > 10 { fmt.Println("10보다 크다") } } >>> go run main.go raise error
괄호 생략 불가
java등에서는 조건이 하나인 경우 괄호를 생략 가능한 경우가 있는데 go는 반드시 괄호가 포함돼야 함func main() { a := 10 if a > 10 fmt.Println("10보다 크다") } >>> go run main.go raise error
조건은 반드시 bool형태
func main() { if c:= 1; c { fmt.Println(c) } } >>> go run main.go raise error
II. switch
- switch 뒤 표현식 생략 가능(단, 사용이 권장됨)
- case 뒤 표현식 사용 가능
- type 분기 가능
- fallthrough 지원 -> 조건에 대응되는 case문의 다음 case문 함께 실행(맨 마지막 case문에는 사용이 불가하며 예외처리에 사용)
1. 기본 사용법
package main
func main() {
switch exp {
case exp1 :
result1
fallthrough
case exp2 :
result2
default :
default_result
}
}
III. for
- go의 반복문은 for문이 유일하다
1. 기본 사용법
- 기본 for문
package main
func for1(){
for i := 0; i < 10; i++ {
result
}
}
i := 0
func for2(){
for i < 10; {
result
i++
}
}
- 무한루프
조건을 사용하지 않으면 무한루프 형식
func main(){
for {
result
}
}
- range 사용
func main(){
car := []string("bmw", "audi", "toyota")
for idx, name := range car {
fmt.Prinln(idx, ":", name)
}
}
- break 사용 == while문 처럼 사용
func main(){
for {
if i > 100 {
break
}
i++
}
}
- Loop 사용
continue/break에 걸리면 지정된 항목으로 이동
func main() {
Loop1:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
if i == 2 && j == 4 {
break Loop1
}
}
}
}
func main() {
Loop2:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 2 {
continue Loop2
}
fmt.Println("loop2", i, j)
}
}
}
2. 주의사항
- 괄호 줄바꿈 금지
- 괄호 생략 불가
- 수치 연산은 반환값이 없음을 유의
for i,j := 0,0; i <= 10; i = i+1, j = j+1{
"에러 발생 X"
}
for i,j := 0,0; i <= 10; i++, j += 1 {
"에러 발생"
}
반응형