반복과 순서
무작위 맵 순서 처리하기
반복과 순서은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
맵 순회하기
range를 사용하여 맵을 순회하면서 각 키와 값을 가져옵니다.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2}
for k, v := range m {
fmt.Println(k, v)
}
}순서는 무작위입니다
맵 순회 순서는 보장되지 않습니다. Go는 순서를 의도적으로 무작위화합니다. 같은 순회문을 두 번 실행해도 키가 다른 순서로 출력될 수 있습니다.
무작위로 만드는 이유
Go는 개발자가 특정 순서에 실수로 의존하지 않도록 일부러 순서를 무작위화합니다. 맵 순서에 의존하는 코드는 언제든 문제가 될 수 있습니다.
키만 순회하기
값을 생략하면 키만 순회할 수 있습니다.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2, "c": 3}
for k := range m {
fmt.Println(k)
}
}키 수집하기
예측 가능한 결과를 얻으려면 먼저 키를 슬라이스에 수집하십시오.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2, "c": 3}
keys := []string{}
for k := range m {
keys = append(keys, k)
}
fmt.Println("collected", len(keys), "keys")
}키 정렬하기
수집한 키를 정렬한 다음 슬라이스를 순회하십시오. 그러면 순서가 정해진 일관된 출력이 생성됩니다.
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]int{"c": 3, "a": 1, "b": 2}
keys := []string{}
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Println(k, m[k])
}
}정렬된 출력 패턴
수집한 후 정렬하는 패턴은 맵을 예측 가능한 순서로 출력하는 표준적인 방법입니다. 출력 순서가 중요하다면 항상 키를 정렬하십시오.
정수 키 정렬하기
숫자 키에도 sort.Ints를 사용하여 같은 방법을 적용할 수 있습니다.
package main
import (
"fmt"
"sort"
)
func main() {
m := map[int]string{3: "c", 1: "a", 2: "b"}
keys := []int{}
for k := range m {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
fmt.Println(k, m[k])
}
}순회 중 수정하기
range 순회문 중에 키를 안전하게 삭제할 수 있습니다. 하지만 순회 중에 키를 추가하면 동작이 정의되지 않습니다. 새 항목이 나타날 수도 있고 나타나지 않을 수도 있습니다.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2, "c": 3}
for k := range m {
if k == "b" {
delete(m, k)
}
}
fmt.Println(len(m))
}값을 기준으로 정렬하기
키가 아니라 값을 기준으로 정렬하려면 키를 수집한 다음 맵의 값을 읽는 비교 함수로 정렬하십시오.
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]int{"a": 3, "b": 1, "c": 2}
keys := []string{}
for k := range m {
keys = append(keys, k)
}
sort.Slice(keys, func(i, j int) bool {
return m[keys[i]] < m[keys[j]]
})
for _, k := range keys {
fmt.Println(k, m[k])
}
}순서에 절대 의존하지 않기
핵심 내용은 맵 순회 순서를 절대 가정하지 않는 것입니다. 순서가 중요하다면 키를 슬라이스로 추출하고 명시적으로 정렬하십시오.
빠른 확인
맵의 항목을 키의 알파벳순으로 출력해야 합니다. 올바른 방법은 무엇입니까?
복습
순회와 순서:
- 맵의 range 순서는 의도적으로 무작위입니다
- 키를 수집하고 정렬한 다음 순회하여 일관된 출력을 만듭니다
- range 중 삭제는 안전하지만 추가는 동작이 정의되지 않습니다
자주 묻는 질문
“반복과 순서” 강의는 무료인가요?
네 — “반복과 순서” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“반복과 순서”에서 뭘 배우나요?
무작위 맵 순서 처리하기 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“반복과 순서” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.