프로그래밍 언어/Golang

Go: 반복문 (for, range)

for

반복문을 사용할 때는 for 키워드를 사용한다. Go 언어에는 while 문이 없기 때문에 for 문에서 모든 반복을 해결한다. 아래에서 몇 가지 케이스를 살펴보자. 반복문은 초기화식, 조건식, 증감식이 사용된 형태로 사용된다. 대부분에서 언어에서 공통으로 사용되는 형태이다. 반복자가 10 미만인 경우에 한해 반복하며 블록 내부에 있는 코드를 실행하고, 이후 반복자의 값을 하나씩 더한다.

package main

import "fmt"

func main() {
	sum := 0
	for i := 0; i < 10; i++ {
		sum += i
	}
	// -> 45
	fmt.Println(sum)
}

while 처럼 사용하기

for 문을 타언어의 while 처럼 사용할 수 있다.

package main

import "fmt"

func main() {
	sum := 1
	for sum < 100 {
		sum += sum
	}
	// -> 128
	fmt.Println(sum)
}

무한 루프

무한 루프의 경우 아무것도 안 주면 된다. 타언어에 비해 상당히 심플하다.

package main

func main() {
	for {
	}
}

for ~ range

배열이나 슬라이스, 맵을 순회할 때 range 키워드를 사용하여 순회할 수 있다. 반복문을 가장 많이 사용하게 되는 케이스가 아닐까 생각해본다. 키, 인덱스가 들어가고 두 번째에는 이 들어간다. 여기서 값이 숫자로 나오는 이유는 아스키 코드 테이블에 의해 매핑된 값이 출력되기 때문이다. Go 에서는 rune 에 대해 출력을 하게 되면 자동으로 코드 값으로 바꿔준다.

package main

import "fmt"

func main() {
	runes := []rune{'A', 'B', 'C'}
	for _, r := range runes {
		// -> 65, 66, 67
		fmt.Println(r)
	}
}

반복문 제어하기

반복문을 제어하는 방법으로는 break, continue 키워드가 존재한다. break 를 사용하면 반복문에서 즉시 탈출하며, continue 를 하면 그 이후 표현식은 모두 무시하고 다시 조건식으로 되돌아간다. 아래의 코드에서 출력은 10 까지만 허용되며 11 은 2로 나누어 지지않고 조건문에 포함되지 않으므로 break 가 사용되어 밖으로 반복문을 벗어난다.

package main

import "fmt"

func main() {
	numbers := []int{2, 4, 6, 8, 10, 11, 14}

	// -> 2, 4, 6, 7, 10
	for _, num := range numbers {
		if num%2 == 0 {
			fmt.Println(num)
			continue
		}
		break
	}
}