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