range로 컬렉션 순회
슬라이스, 맵 및 문자열에 range 사용
range로 컬렉션 순회은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
range란 무엇인가요
range는 배열, 슬라이스, 맵, 문자열, 채널을 순회하는 특수한 for 루프 형식입니다. 각 반복에서 인덱스(또는 키)와 값을 반환합니다.
슬라이스에서 range 순회
요소의 인덱스와 복사본을 반환합니다:
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry"}
for i, fruit := range fruits {
fmt.Printf("%d: %s\n", i, fruit)
}
}배열에서 range 순회
슬라이스와 동일하게 작동합니다. 반복할 때마다 배열 요소가 복사됩니다:
package main
import "fmt"
func main() {
nums := [3]int{10, 20, 30}
for _, v := range nums {
fmt.Println(v)
}
}맵에서 range 순회
무작위 순서로 키와 값을 반환합니다:
package main
import "fmt"
func main() {
capitals := map[string]string{
"France": "Paris",
"Japan": "Tokyo",
}
for country, city := range capitals {
fmt.Printf("%s -> %s\n", country, city)
}
}문자열에서 range 순회
바이트가 아닌 유니코드 코드 포인트(rune)를 순회합니다. 인덱스는 룬이 시작되는 바이트 위치입니다:
package main
import "fmt"
func main() {
for i, r := range "héllo" {
fmt.Printf("%d: %c\n", i, r)
}
}인덱스 버리기
값만 필요할 때 인덱스를 무시하려면 _를 사용합니다:
package main
import "fmt"
func main() {
total := 0
for _, v := range []int{1, 2, 3, 4, 5} {
total += v
}
fmt.Println(total) // 15
}인덱스만 사용하는 range
값을 생략하면 인덱스만 얻습니다. 제자리에서 값을 변경할 때 유용합니다:
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
for i := range s {
s[i] *= 2
}
fmt.Println(s) // [2 4 6]
}채널에서 range 순회
채널이 닫힐 때까지 range가 채널에서 값을 읽습니다:
package main
import "fmt"
func main() {
ch := make(chan int, 3)
ch <- 1; ch <- 2; ch <- 3
close(ch)
for v := range ch {
fmt.Println(v)
}
}반복 변수의 함정
range 변수는 매 반복마다 재사용됩니다. 고루틴이나 클로저에서 이 변수의 주소를 캡처하는 것은 흔히 발생하는 버그입니다:
package main
import "fmt"
func main() {
nums := []int{1, 2, 3}
funcs := make([]func(), 3)
for i, v := range nums {
v := v // shadow with a copy
funcs[i] = func() { fmt.Println(v) }
}
for _, f := range funcs { f() } // 1 2 3
}슬라이스 요소 수정
range로 얻는 값은 복사본입니다. 값을 수정하려면 인덱스를 사용합니다:
package main
import "fmt"
func main() {
s := []int{10, 20, 30}
for i := range s {
s[i]++
}
fmt.Println(s) // [11 21 31]
}빠른 확인
문자열을 range로 순회할 때 값 변수의 타입은 무엇입니까?
복습: range
핵심 내용:
range는 슬라이스, 배열, 맵, 문자열, 채널에서 사용할 수 있습니다- (인덱스, 값)을 반환하며 둘 중 하나는
_로 버릴 수 있습니다 - range로 얻는 값은 복사본이므로 인덱스를 통해 변경합니다
- 문자열은 바이트가 아니라 룬을 반환합니다
- 맵의 순회 순서는 무작위입니다
연습 과제
range를 사용하여 map[string]int의 모든 값의 합을 계산하고 각 항목과 전체 합계를 모두 출력하십시오.
자주 묻는 질문
“range로 컬렉션 순회” 강의는 무료인가요?
네 — “range로 컬렉션 순회” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“range로 컬렉션 순회”에서 뭘 배우나요?
슬라이스, 맵 및 문자열에 range 사용 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“range로 컬렉션 순회” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 배열: 고정 길이 컬렉션
- 슬라이스: 동적 목록
- 맵: 키-값 저장소
- range로 컬렉션 순회