range로 Go 언어의 맵을 순환하면 꺼낸 순서가 랜덤입니다
이루어지다
다음 코드를 실행하면 출력 값의 순서가 실행에 따라 달라집니다.
package main
import "fmt"
func main() {
m := map[int]string{
1: "value1",
2: "value2",
3: "value3",
}
for key, value := range m {
fmt.Println(key, value)
}
}
처음2 value2
3 value3
1 value1
두번째3 value3
1 value1
2 value2
왜 순서가 랜덤일까요?
낡은 언어 규범에는 매핑의 중복 순서가 정의되어 있지 않고 하드웨어 플랫폼 간에 실행 순서가 다르다.
반복 순서에 의존하면 이식성이 사라지기 때문에 랜덤성을 갖는다.
이것이 바로 이런 행위의 원인인 것 같다.
순서를 정하고 싶을 때.
맵의 키를 슬라이스에 넣고 이를 기준으로 순환하면 맵의 순서를 고정시킬 수 있습니다.
package main
import (
"fmt"
"sort"
)
func main() {
m := map[int]string{
1: "value1",
2: "value2",
3: "value3",
}
var keys []int
for k := range m {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
fmt.Println("Key:", k, "Value:", m[k])
}
}
Reference
이 문제에 관하여(range로 Go 언어의 맵을 순환하면 꺼낸 순서가 랜덤입니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/sinozu/articles/c02cecbab039795d071a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)