go

Go 반복문

까오기 2024. 7. 11. 11:08

Go 언어에서 반복문은 주로 for 문을 사용하여 구현됩니다. Go에서는 for 문 하나만으로 다양한 반복을 수행할 수 있으며, 다른 언어에서 사용되는 while 문과 do-while 문은 for 문으로 대체됩니다.

기본 for 문

기본적인 for 문은 초기화, 조건, 후처리로 구성됩니다.

 
package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}

위 예제에서 i는 0부터 시작하여 5보다 작을 때까지 1씩 증가하며 반복됩니다.

조건만 있는 for 문

조건만을 사용하는 for 문은 다른 언어의 while 문과 유사합니다.

 
package main

import "fmt"

func main() {
    i := 0
    for i < 5 {
        fmt.Println(i)
        i++
    }
}

이 예제는 i가 5보다 작을 때까지 반복합니다.

무한 루프

조건 없이 for 문을 사용하면 무한 루프를 생성할 수 있습니다.

 
package main

import "fmt"

func main() {
    i := 0
    for {
        fmt.Println(i)
        i++
        if i >= 5 {
            break
        }
    }
}

이 예제는 break 문을 사용하여 i가 5 이상이 되면 무한 루프를 종료합니다.

for 문에서 range 사용

for 문은 range 키워드와 함께 사용되어 슬라이스, 배열, 맵, 문자열 등을 순회할 수 있습니다.

슬라이스와 배열

 
package main

import "fmt"

func main() {
    nums := []int{2, 4, 6, 8, 10}
    for index, value := range nums {
        fmt.Printf("index: %d, value: %d\n", index, value)
    }
}

이 예제에서 range nums는 슬라이스 nums의 인덱스와 값을 반환합니다.

문자열

 
package main

import "fmt"

func main() {
    str := "hello"
    for index, char := range str {
        fmt.Printf("index: %d, char: %c\n", index, char)
    }
}

이 예제에서 range str은 문자열 str의 인덱스와 문자를 반환합니다.

 
package main

import "fmt"

func main() {
    fruits := map[string]string{"a": "apple", "b": "banana", "c": "cherry"}
    for key, value := range fruits {
        fmt.Printf("key: %s, value: %s\n", key, value)
    }
}

이 예제에서 range fruits는 맵 fruits의 키와 값을 반환합니다.

for 문에서 제어 구문

  • break: 반복문을 종료합니다.
  • continue: 현재 반복을 건너뛰고 다음 반복을 시작합니다.

break 예제

 
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break
        }
        fmt.Println(i)
    }
}

이 예제는 i가 5가 되면 break 문에 의해 반복을 종료합니다.

continue 예제

 
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Println(i)
    }
}

이 예제는 i가 짝수일 때 continue 문에 의해 현재 반복을 건너뛰고 다음 반복을 시작합니다.

예제 코드

다양한 형태의 for 문을 사용하는 예제 코드를 보겠습니다:

 
package main

import "fmt"

func main() {
    // 기본 for 문
    for i := 0; i < 5; i++ {
        fmt.Println("기본 for 문:", i)
    }

    // 조건만 있는 for 문
    j := 0
    for j < 5 {
        fmt.Println("조건만 있는 for 문:", j)
        j++
    }

    // 무한 루프
    k := 0
    for {
        if k >= 5 {
            break
        }
        fmt.Println("무한 루프:", k)
        k++
    }

    // 슬라이스와 배열을 순회하는 for 문
    nums := []int{2, 4, 6, 8, 10}
    for index, value := range nums {
        fmt.Printf("슬라이스: index=%d, value=%d\n", index, value)
    }

    // 문자열을 순회하는 for 문
    str := "hello"
    for index, char := range str {
        fmt.Printf("문자열: index=%d, char=%c\n", index, char)
    }

    // 맵을 순회하는 for 문
    fruits := map[string]string{"a": "apple", "b": "banana", "c": "cherry"}
    for key, value := range fruits {
        fmt.Printf("맵: key=%s, value=%s\n", key, value)
    }

    // break 예제
    for i := 0; i < 10; i++ {
        if i == 5 {
            break
        }
        fmt.Println("break 예제:", i)
    }

    // continue 예제
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Println("continue 예제:", i)
    }
}

결과 

기본 for 문: 0
기본 for 문: 1
기본 for 문: 2
기본 for 문: 3
기본 for 문: 4
조건만 있는 for 문: 0
조건만 있는 for 문: 1
조건만 있는 for 문: 2
조건만 있는 for 문: 3
조건만 있는 for 문: 4
무한 루프: 0
무한 루프: 1
무한 루프: 2
무한 루프: 3
무한 루프: 4
슬라이스: index=0, value=2
슬라이스: index=1, value=4
슬라이스: index=2, value=6
슬라이스: index=3, value=8
슬라이스: index=4, value=10
문자열: index=0, char=h
문자열: index=1, char=e
문자열: index=2, char=l
문자열: index=3, char=l
문자열: index=4, char=o
맵: key=a, value=apple
맵: key=b, value=banana
맵: key=c, value=cherry
break 예제: 0
break 예제: 1
break 예제: 2
break 예제: 3
break 예제: 4
continue 예제: 1
continue 예제: 3
continue 예제: 5
continue 예제: 7
continue 예제: 9

이 코드는 다양한 for 문 형태를 보여주며, 각 형태의 사용법과 동작을 이해하는 데 도움이 될 것입니다.

 

* 출처 : chatGPT