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