Go Map 인쇄 순서가 잘못됨
Go에서 맵은 키-값 쌍을 비정상적으로 유지하는 해시 테이블을 사용하여 구현됩니다. - 패션을 주문했어요. 결과적으로 지도에 대한 반복은 키나 값이 반환되는 순서를 보장하지 않습니다.
지도 인쇄 순서가 잘못된 이유는 무엇입니까?
In 제공된 코드에서 맵 월은 월 번호와 해당 이름을 나타내는 키-값 쌍으로 정의됩니다. 범위를 사용하여 지도를 반복할 때 인쇄된 출력의 순서는 일반적으로 순서보다는 성능에 최적화된 해시 테이블의 내부 구현을 기반으로 합니다.
순서를 수정하는 방법
맵 반복 순서를 보장하기 위한 여러 접근 방식이 있습니다.
1. 순서화된 지도 사용:
Go에는 순서화된 지도 유형이 내장되어 있지 않지만 이 기능을 제공하는 타사 라이브러리가 있습니다. 그러한 라이브러리 중 하나는 "github.com/golang/collections#OrderedMap"입니다.
import "github.com/golang/collections#OrderedMap" func main() { m := collections.NewOrderedMap() m.Set(1, "January") // ... for _, month := range m.Keys() { fmt.Println(month, "-", m.Get(month)) } }
2. 맵 키 정렬:
또 다른 옵션은 맵에서 키를 가져와 정렬한 다음 정렬된 키를 반복하여 값에 순서대로 액세스하는 것입니다.
func main() { keys := make([]int, 0, len(months)) for k := range months { keys = append(keys, k) } sort.Ints(keys) for _, k := range keys { fmt.Println(k, "-", months[k]) } }
위 내용은 Go Map 반복이 순서가 지정되지 않은 이유는 무엇이며 순서를 어떻게 보장할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!