티스토리 뷰

Programming Language/Go

[Go] 흐름 제어

SdardewValley 2021. 10. 19. 22:00
반응형

if

if 조건식 {
	...
}

위의 형태로 if문을 작성한다. 다른 언어들과 달리 go에서 조건식은 소괄호 안에 작성하지 않아도 되고 소괄호를 사용하여 작성해도 된다.

 

C와 달리 go의 조건식은 boolean 타입이어야 한다.

 

if 조건식1 {
	...
} else if 조건식2 {
	...
} else {
	...
}

여러 개의 조건을 사용하기 위해서는 else if를 사용하면 된다.

 

Java에서는 if문에 {중괄호}를 사용하지 않아도 되었다. go에서는 {중괄호}는 필수적이다. 

 

여는 괄호 { 는 if와 같은 줄에 있어야 하고, 닫는 괄호 } 는 else와 같은 줄에 있어야 한다.

 

import "fmt"

func main() {
	i := 1
	if i > 0 {
		fmt.Println("양수")
	}
	else {
		fmt.Println("음수")
	}
}

위의 코드를 보면 else는 닫는 괄호와 다른 줄에 있다. 이를 실행하면 syntax error가 발생한다.

 

if 초기화구문; 조건식 {
	...
}

if문에는 초기화 구문을 작성할 수 있다.

 

import "fmt"

func main() {
	if i := 1; i > 0 {
		fmt.Println("양수")
	}
}

 

 

switch

switch 값 {
	case 조건1:
    	...
    case 조건2;
    	...
    default:
    	...
}

switch 문의 형식은 위와 같다. break문을 사용하지 않아도 된다는 점이 특이하다.

 

import "fmt"

func main() {
	switch i := 0; i {
	case 0:
		fmt.Println("0입니다.")
		fallthrough
	default:
		fmt.Println("0이 아닙니다.")
	}
    /*
    출력
    0입니다.
    0이 아닙니다.
    */
}

go에서 switch문은 일치하는 case를 만나면 switch문을 빠져 나오기 때문에, break를 쓰지 않아도 된다. 만약 sitch 문을 빠져나오지 않고 다음 case로 넘어가려면 fallthrough를 사용하면 된다.

 

위에서 언급한 if문 처럼, 여는 괄호 { 는 switch문과 같은 줄에 위치해야 한다.

 

case문에 값을 콤마 , 로 구분하고 여러 개의 값을 사용할 수 있는 것도 특징이다.

 

import "fmt"

func main() {
	switch i := 0; i {
	case 0:
		fmt.Println("0입니다.")
	default:
		fmt.Println("0이 아닙니다.")
	}
}

if문과 마찬가지로 초기화 구문을 switch문에 사용할 수 있다.

 

switch {
	case 조건식1:
    	...
    case 조건식2:
    	...
   	default:
    	...
}

switch에 다른 값을 기입하지 않고 위와 같은 형식으로 작성할 수 있다. 

 

func main() {
	i := 6
	switch {
	case i < 0:
		fmt.Println(i, "은 음수")
	case i > 0:
		fmt.Println(i, "은 양수")
	default:
		fmt.Println(i, "은 영")
	}
}

else if를 대신하여 switch를 사용할 수 있다.

 

 

for

for 초기화구문; 조건식; 후속작업 {
	...
}

go에서는 모든 반복문은 for을 사용한다. while이 없다는 점이 특징이다. 초기화구문, 조건식, 후속작업은 모두 생략가능하다. 조건식을 생략한다면 for문은 무한루프와 같은 기능을 한다.

 

func main() {
	for i := 2; i <= 9; i++ {
		for j := 1; j <= 9; j++ {
			fmt.Println(i , " X ", j , " = ", i * j)
		}
	}
}

위의 코드는 구구단을 출력한다.

 

 

break & continue

break와 continue는 다른 언어에서도 많이 사용된다. break는 반복문을 종료할 때, continue는 반복문을 처음부터 다시 실행할 때 사용한다.

 

func main() {
	i := 2
	for {
		if i == 10 {
			break
		}

		j := 1
		for {
			if j == 10 {
				break
			}
			fmt.Println(i , " X ", j , " = ", i * j)
			j++
		}
		i++
	}
}

위의 구구단을 출력하는 코드를 break를 사용하도록 변경해 보았다.

 

import "fmt"

func main() {
	i := 2
	for {
		if i == 10 {
			break
		}

		j := 1
		LOOP:
		for {
			if j == 10 {
				break LOOP
			}
			fmt.Println(i , " X ", j , " = ", i * j)
			j++
		}
		i++
	}
}

break LOOP를 만나면 LOOP라고 지정된 for문을 빠져나온다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함