[Go 언어] 27. Go 언어 반복문은 for 문, 반복문 탈출은 break

안녕하세요. 언제나 휴일입니다.

이번에는 Go언어의 반복문을 알아볼게요. Go언어에서 제공하는 반복문은 for 문이예요. while 문이나 do while 문을 제공하지 않습니다.

for 초기식; 조건식;조건 변화식{

반복 수행할 구문

}

프로젝트를 생성하여 1부터 100까지 정수의 합계를 계산하는 코드를 표현해 보아요.

// Example 반복문(1부터 100까지 정수 합계 구하기)
package main

import "fmt"

func main() {
	var sum = 0
	for i := 1; i <= 100; i++ {
		sum += i
	}
	fmt.Println("1부터 100까지 정수 합계:", sum)
}

실행 결과

1부터 100까지 정수 합계: 5050

for문에서 초기 구문을 지정할 때 i:=1처럼 표현하여 for문 내에서만 사용 가능하게 할 수 있어요.

for i := 1; i <= 100; i++ {

for문도 if문처럼 엄격한 폼을 요구합니다. for문의 중괄호를 생략할 수도 없고 중괄호의 위치를 변경할 수도 없습니다.

[그림 1] 중괄호 위치를 잘못 사용

for문에 조건식만 표현하여 C언어의 while 문처럼 표현할 수 있습니다.

for 조건식{

반복 수행할 구문

}

// Example 반복문 - 조건식만 표현
package main

import "fmt"

func main() {
	var sum = 0
	var i int
	i = 1
	for i <= 100 {
		sum += i
		i++
	}
	fmt.Println("1부터 100까지 정수 합계:", sum)
}

그리고 for 키워드 뒤에 아무 표현없이 바로 중괄호가 오면 무한 루프입니다. 이 때는 break 문을 이용하여 반복문을 탈출할 수 있어요.

다음은 1부터 순차적으로 정수의 합계를 구하다 처음으로 100을 넘어서면 반복문을 탈출하여 결과를 출력하는 예제 코드입니다.

// Example 반복문 - 무한 루프
package main

import "fmt"

func main() {
	var sum = 0
	var i int
	i = 1
	for {
		sum += i
		if sum > 100 {
			break
		}
		i++
	}
	fmt.Println("1에서 ", i, " 까지 더하면 처음으로 100이 넘어요.")
	fmt.Println("합계:", sum)
}

그리고 Go 언어에서는 중첩 반복문에서 break 키워드 뒤에 레이블을 지정하여 원하는 반복문을 탈출할 수 있습니다.

다음은 이중 반복문 내부에서 정수를 입력받아 0에서 100 사이의 정수이면 입력한 정수를 합계에 더하고 100을 넘어서면 내부 반복문을 탈출하고 음수일 때는 전체 반복문을 탈출하는 예제 코드입니다.

// Example 중첩 반복문을 break 레이블로 탈출하기
package main

import "fmt"

func main() {
	var sum = 0
	var num int
Loop1:
	for i := 0; i < 10; i++ {
	Loop2:
		for j := 0; j < 10; j++ {
			fmt.Print("정수 입력:")
			fmt.Scanln(&num)
			if num < 0 {
				break Loop1
			} else {
				if num > 100 {
					break Loop2
				}
			}
			sum += num
			fmt.Println("j:", j)
		}
		fmt.Println("i:", i)
	}
	fmt.Println("합계:", sum)

}

실행 결과

정수 입력:3
j: 0
정수 입력:4
j: 1
정수 입력:102
i: 0
정수 입력:2
j: 0
정수 입력:101
i: 1
정수 입력:2
j: 0
정수 입력:3
j: 1
정수 입력:-1
합계: 14