🔥 Range를 사용한 반복문
Go 언어에서는 for
루프를 사용하여 슬라이스나 맵을 반복할 수 있어요. 이를 "range" 형태의 for
루프라고 부른답니다.
슬라이스를 range로 반복할 때, 각 반복마다 두 개의 값이 반환되는데요. 첫 번째 값은 인덱스이고, 두 번째 값은 해당 인덱스의 요소 복사본이에요.
실제 코드를 통해 살펴볼까요?
package main import "fmt" var pow = []int{1, 2, 4, 8, 16, 32, 64, 128} func main() { for i, v := range pow { fmt.Printf("2**%d = %d\n", i, v) } }
go
코드를 하나씩 뜯어보면:
pow
라는 정수 슬라이스를 선언하고 2의 거듭제곱 값들로 초기화했어요.main()
함수 내에서range
를 사용해pow
슬라이스를 반복하고 있죠.- 각 반복마다, 인덱스는
i
변수에, 해당 인덱스의 요소 값은v
변수에 할당됩니다. fmt.Printf()
를 사용해 인덱스i
와 해당 인덱스의 2의 거듭제곱 값v
를 출력하고 있네요.
이 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있어요:
2**0 = 1 2**1 = 2 2**2 = 4 2**3 = 8 2**4 = 16 2**5 = 32 2**6 = 64 2**7 = 128
text
보시다시피 range
는 슬라이스의 각 요소를 차례로 접근하며, 인덱스와 값을 쌍으로 반환하고 있죠. 이를 활용하면 슬라이스의 요소를 편리하게 반복 처리할 수 있답니다.
그런데 range
는 슬라이스뿐만 아니라 배열에 대해서도 동일하게 사용할 수 있어요.
배열을 range
로 순회할 때도 슬라이스와 마찬가지로 각 반복마다 인덱스와 해당 인덱스의 요소 값이 반환된답니다.
간단한 예제 코드를 통해 살펴볼까요?
package main import "fmt" func main() { arr := [5]string{"apple", "banana", "cherry", "date", "elderberry"} for i, v := range arr { fmt.Printf("arr[%d] = %s\n", i, v) } }
go
코드를 하나씩 설명해 볼게요:
arr
이라는 문자열 배열을 선언하고 5개의 과일 이름으로 초기화했어요.for
루프에서range
를 사용해arr
배열을 순회하고 있죠.- 각 반복마다, 인덱스는
i
변수에, 해당 인덱스의 요소 값은v
변수에 할당됩니다. fmt.Printf()
를 사용해 인덱스i
와 해당 인덱스의 과일 이름v
를 출력하네요.
이 코드의 실행 결과는 다음과 같아요:
arr[0] = apple arr[1] = banana arr[2] = cherry arr[3] = date arr[4] = elderberry
text
보시다시피 range
를 사용하여 배열의 각 요소에 차례로 접근하고, 인덱스와 값을 쌍으로 얻을 수 있죠.
배열의 크기가 컴파일 타임에 결정되는 반면, 슬라이스는 동적으로 크기가 변할 수 있다는 점만 기억해 주세요. 하지만 range
를 사용하여 순회하는 방식은 배열과 슬라이스 모두 동일하답니다.
range
를 사용한 for
루프는 Go 언어에서 자주 사용되는 패턴이에요. 고정 크기의 배열이든, 동적 크기의 슬라이스든 range
를 활용하면 요소를 쉽게 반복 처리할 수 있죠. 다양한 자료 구조를 반복할 때 range
를 적극 활용해 보세요. 코드가 더욱 간결하고 가독성 있어질 거예요!