> 백엔드 개발 > Golang > Go Map 반복이 순서가 지정되지 않은 이유는 무엇이며 순서를 어떻게 보장할 수 있나요?

Go Map 반복이 순서가 지정되지 않은 이유는 무엇이며 순서를 어떻게 보장할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-29 05:20:13
원래의
275명이 탐색했습니다.

Why is Go Map Iteration Unordered, and How Can I Guarantee Order?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿