Go 맵의 키-값 순서 이해
Go에서 맵은 키-값 쌍의 정렬되지 않은 모음입니다. 범위 루프를 사용하여 지도를 반복할 때 키와 값이 반환되는 순서를 예측할 수 없습니다. 이 동작은 순서를 유지하는 것보다 성능을 우선시하는 지도의 내부 구현에서 비롯됩니다.
순서가 잘못된 출력 이유
귀하의 예에서 지도 월 키는 월 번호를 나타내는 정수이고 값은 해당 월 이름인 키-값 쌍을 포함합니다. 범위 루프를 사용하여 맵을 반복하면 Go 런타임은 맵이 메모리에 구성되는 방식에 따라 키-값 쌍을 인쇄합니다. 그러나 이 구성은 실행마다 다를 수 있으므로 순서가 잘못된 출력이 발생할 수 있습니다.
순서 유지
키-값이 필요한 경우 특정 순서로 쌍을 인쇄하려면 두 가지 옵션이 있습니다:
1. 배열 사용
배열은 요소의 고정된 순서를 유지하는 데이터 구조입니다. 알려진 크기의 배열을 사용하면 키-값 쌍의 순서를 명시적으로 설정할 수 있습니다. 예제 코드는 다음과 같습니다.
var months [12]string months[0] = "January" months[1] = "Fabruary" // ... Populate the rest of the array
2. 지도 키 정렬
지도를 반복하기 전에 지도 키를 정렬할 수도 있습니다. 이렇게 하면 키-값 쌍이 원하는 순서로 인쇄됩니다. 다음은 예제 코드입니다.
keys := make([]int, 0, len(months)) for key := range months { keys = append(keys, key) } sort.Ints(keys) for _, key := range keys { fmt.Println(key, "-", months[key]) }
이러한 접근 방식 중 하나를 사용하면 지도 월의 출력 순서를 제어할 수 있습니다.
위 내용은 Go 맵을 반복할 때 키-값 쌍의 순서를 예측할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!