1 반복문 개요

Go 언어에서는 반복문을 사용하여 코드 블록을 여러 번 실행할 수 있습니다. 특정 작업을 반복적으로 수행해야 할 때는 반복문이 매우 유용합니다. 예를 들어 배열의 각 요소를 반복적으로 반복하거나 특정 조건이 충족될 때까지 작업을 반복할 수도 있습니다. Go 언어에서는 주로 for 키워드를 사용하여 반복문을 구현하며, 이는 Go 언어에서 유일한 반복문입니다. 효율적이고 유지보수 가능한 코드를 작성하는 데 반복문을 올바르게 사용하는 것이 중요합니다.

2 for 반복문의 기본

2.1 for 반복문의 구조

Go 언어에서 for 반복문은 세 부분으로 구성됩니다:

  1. 초기화문: 첫 번째 반복 전에 실행되며, 일반적으로 반복 횟수를 선언하는 데 사용됩니다.
  2. 조건 표현식: 각 반복 전에 평가됩니다. 조건이 true인 경우에만 반복 본문이 실행됩니다.
  3. 후속문: 각 반복의 코드 블록 실행 후에 실행되며, 일반적으로 반복 횟수를 업데이트하는 데 사용됩니다.

for 반복문의 구문은 다음과 같습니다:

for 초기화문; 조건 표현식; 후속문 {
    // 반복 본문 코드
}

2.2 for 반복문의 간단한 예제

간단한 예제를 통해 for 반복문의 실행 과정을 이해해 봅시다:

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println("i의 값은:", i)
    }
}

이 예제에서 변수 i0으로 초기화됩니다. for 반복문은 조건 i < 5가 참인지 확인합니다. 조건이 참이면 반복 본문이 실행되고 i의 값이 출력됩니다. 반복 본문 실행 후에 i의 값이 i++ (증가 연산)에 의해 업데이트되고, 그런 다음 i의 값이 5에 도달할 때까지 조건을 다시 확인하고, 조건이 거짓이 되면 for 반복문이 종료됩니다.

2.3 기타 for 반복문 예제

Go 언어의 for 반복문은 매우 유연하며 다양한 형태로 작성하여 다양한 시나리오를 처리할 수 있습니다.

2.3.1 무한 반복

Go에서는 for 반복문의 초기화문, 조건 표현식, 후속문을 생략하여 무한 반복문을 만들 수 있으며, 이는 break 문이나 함수에서의 반환 값을 통해 종료될 때까지 실행됩니다.

for {
    // 무한 반복문 내의 코드
    if someCondition {
        break // 특정 조건이 충족되면 반복문을 종료합니다
    }
}

2.3.2 조건만 있는 반복문

Go에서는 다른 프로그래밍 언어의 while 반복문과 유사하게 조건만 포함하는 for 반복문을 사용할 수도 있습니다.

n := 0
for n < 5 {
    fmt.Println(n)
    n++
}

위의 코드는 0에서 4까지를 출력하고, n5가 되면 반복문이 종료됩니다.

2.3.3 배열이나 슬라이스를 반복

Go에서는 range 키워드를 사용하여 배열이나 슬라이스의 각 요소를 반복하는 것을 간소화할 수 있습니다.

items := []int{1, 2, 3, 4, 5}
for index, value := range items {
    fmt.Printf("인덱스: %d, 값: %d\n", index, value)
}

위의 코드는 각 요소의 인덱스와 값이 출력됩니다. 요소의 값만 필요한 경우 _를 사용하여 인덱스를 무시할 수 있습니다.

for _, value := range items {
    fmt.Printf("값: %d\n", value)
}

참고: 배열의 사용법은 후속 장에서 자세히 설명될 것입니다. 이 부분을 이해하지 못해도 괜찮습니다. for 반복문을 이렇게 사용할 수 있다는 정도만 이해하면 됩니다.

2.3.4 맵을 순회하기

맵을 순회할 때는 for 루프와 range 표현식의 결합이 매우 강력합니다. 이를 사용하면 맵의 각 키-값 쌍을 얻을 수 있습니다.

colors := map[string]string{"red": "#ff000", "green": "#00ff00", "blue": "#000ff"}
for key, value := range colors {
    fmt.Printf("키: %s, 값: %s\n", key, value)
}

이 예시에서는 colors 맵의 모든 키와 해당 값들을 출력합니다. 슬라이스를 순회하는 것과 유사하게, 필요한 것이 키인지 값인지에 따라 다른 것을 무시할 수 있습니다.

참고: 맵의 사용 방법은 후속 장에서 자세히 설명됩니다. 이 부분을 이해하지 못했다면 괜찮습니다. 단순히 for 루프를 이런 식으로 사용할 수 있다는 것만 이해하면 됩니다.

3 반복문의 흐름 제어

3.1 break를 사용하여 반복문 종료하기

특정 조건이 충족되었을 때 반복문을 조기에 종료해야 하는 경우가 있습니다. 그런 경우 break 문을 사용할 수 있습니다. 아래는 break를 사용하여 반복문을 종료하는 예시입니다:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break // i가 5와 같을 때 반복문을 종료합니다.
        }
        fmt.Println("i의 값은:", i)
    }
    // 결과에는 0부터 4까지의 값만 포함됩니다.
}

3.2 continue를 사용하여 반복 건너뛰기

특정 상황에서 현재 반복을 건너뛰고 다음 반복으로 진행하고 싶을 때 continue 문을 사용할 수 있습니다. 다음은 그 예시입니다:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 != 0 {
            continue // i가 홀수일 때 이 반복을 건너뜁니다.
        }
        fmt.Println("짝수:", i)
    }
}