Go의 지도: 순서 유지 및 요소 액세스
Go에서 지도는 키-값 쌍을 저장하는 동적이고 효율적인 방법을 제공합니다. 그러나 배열이나 슬라이스와 달리 맵은 본질적으로 정렬되지 않습니다. 이로 인해 반복할 때 순서가 잘못된 출력이 나타날 수 있습니다.
다음 코드 조각은 이 동작을 보여줍니다.
package main import ( "fmt" ) type monthsType struct { no int text string } var months = map[int]string{ 1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December", } func main(){ for no, month := range months { fmt.Print(no) fmt.Println("-" + month) } }
이 코드를 실행하면 지도가 키 순서(1~12번)로 인쇄되지 않습니다. 대신 무작위 순서로 인쇄됩니다.
해결책: 지도의 순서 제어
지도를 특정 순서로 인쇄하려면 몇 가지 옵션이 있습니다. 다음을 고려할 수 있습니다:
1. 배열 사용:
순서가 중요한 경우 배열을 사용하여 요소를 순차적으로 저장할 수 있습니다. 배열은 인덱스를 사용하여 요소에 직접 액세스할 수 있는 정렬된 데이터 구조를 제공합니다.
2. 키 정렬:
맵을 데이터 구조로 유지해야 하는 경우 sort.Ints 함수를 사용하여 정렬된 키 목록을 얻고, 정렬된 키를 반복하고, 맵에서 해당 값을 검색할 수 있습니다. .
예제 코드:
package main import ( "fmt" "sort" ) type monthsType struct { no int text string } var months = map[int]string{ 1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December", } func main(){ var sortedKeys []int for key := range months { sortedKeys = append(sortedKeys, key) } sort.Ints(sortedKeys) fmt.Println("Printing in order:") for _, key := range sortedKeys { fmt.Printf("%d-%s", key, months[key]) } }
이 코드에서 sortedKeys 배열은 맵의 키를 오름차순으로 저장하기 위해 생성됩니다. 그런 다음 정렬된 키를 반복하고 맵에서 해당 값에 액세스합니다. 그러면 다음과 같은 출력이 생성됩니다.
Printing in order: 1-January2-Fabruary3-March4-April5-May6-June7-July8-August9-September10-October11-Novenber12-December
위 내용은 Go 맵을 반복할 때 순서 있는 출력을 보장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!