이동 중에 맵을 반복하는 것은 for
Loop의 range
키워드를 사용하여 수행됩니다. 이를 통해 맵의 각 항목의 키와 값에 모두 액세스 할 수 있습니다. 지도를 반복하기위한 기본 구문은 다음과 같습니다.
<code class="go">myMap := map[string]int{"one": 1, "two": 2, "three": 3} for key, value := range myMap { fmt.Printf("Key: %s, Value: %d\n", key, value) }</code>
이 코드는 맵에서 각 키 값 쌍을 인쇄합니다. 맵이 본질적으로 정렬되지 않은 데이터 구조이므로 반복 할 때마다 동일하게 보장되지는 않습니다.
맵이있는 range
를 사용하기위한 for
은 다음과 같습니다.
<code class="go">for key, value := range mapVariable { // Code to process each key-value pair }</code>
여기서 mapVariable
은 귀하의지도이며, key
현재 항목의 키를 보유하며 value
관련 값을 유지합니다. 그들 중 하나에만 관심이있는 경우 키나 값을 무시하도록 선택할 수 있습니다. 예를 들어, 키를 반복하려면 다음과 같습니다.
<code class="go">for key := range mapVariable { // Code to process each key }</code>
또는 값에 대해서만 반복하기 위해 :
<code class="go">for _, value := range mapVariable { // Code to process each value }</code>
맵을 반복하는 동안 맵을 수정하면 맵의 항목을 직접 수정하면 예기치 않은 동작이나 공황이 발생할 수 있기 때문에 특히 항목을 삭제하려는 경우 까다로울 수 있습니다. 그러나 맵을 반복하면서도 맵을 반복하면서도 안전하게 수정할 수 있습니다.
항목 삭제 : 별도의 슬라이스를 사용하여 삭제 해야하는 키를 수집 한 다음 슬라이스 위로 반복하여 주 반복 루프 후 삭제하여 반복하는 동안 맵에서 항목을 안전하게 삭제할 수 있습니다.
<code class="go">myMap := map[string]int{"one": 1, "two": 2, "three": 3} keysToDelete := []string{} for key, value := range myMap { if value == 2 { keysToDelete = append(keysToDelete, key) } } for _, key := range keysToDelete { delete(myMap, key) }</code>
값 수정 : 문제없이 반복하는 동안 맵 항목의 값을 직접 수정할 수 있습니다.
<code class="go">for key, value := range myMap { myMap[key] = value * 2 // Doubling the value }</code>
GO에서 큰지도를 다룰 때 명심해야 할 몇 가지 성능 고려 사항이 있습니다.
sync.Map
동시 액세스에 사용할 수 있지만 자체 성능 트레이드 오프 세트와 함께 제공됩니다.큰 맵으로 작업 할 때 성능을 최적화하려면 다음을 고려하십시오.
sync.Map
사용.위 내용은 GO에서지도를 어떻게 반복합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!