더북(TheBook)

3.4.2 내부 요소에 순차적으로 접근

배열/슬라이스에 for ... range 루프를 사용하면 전체 요소를 반복하여 각 요소의 인덱스와 값을 얻어올 수 있다.

for index, value := range { }

for ... range에 반환되는 첫 번째 값은 현재 요소의 인덱스이고, 두 번째 값은 현재 요소의 사본이다.


numbers := []int{3, 4, 5, 7, 8, 4, 6, 8, 32, 4}
for index, value := range numbers {
    fmt.Println(index, value)
}

실행 결과

0 3

1 4

2 5

3 7

4 8

5 4

6 6

7 8

8 32

9 4

인덱스를 사용하지 않고 현재 요소의 값만 사용할 때는 인덱스 값을 빈 식별자(_)로 받으면 된다.


numbers := []int{3, 4, 5, 7, 8, 4, 6, 8, 32, 4}
sum := 0
for _, n := range numbers {
    sum += n
}
fmt.Println("sun: ", sum)

실행 결과

sun: 81

for ... range에 반환되는 두 번째 값은 각 요소의 사본이므로 내부 요소의 값을 변경하려면 인덱스로 접근해야 한다. 인덱스만 사용할 때는 for ... range 내부의 두 번째 변수를 생략한다.


numbers := []int{3, 4, 5, 7, 8, 4, 6, 8, 32, 4}
sum := 0
for i := range numbers {
    numbers[i] *= 2
    sum += numbers[i]
}
fmt.Println("numbers: ", numbers)
fmt.Println("sun : ", sum)

실행 결과

numbers: [6 8 10 14 16 8 12 16 64 8]
sun    : 162
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.