GO의지도는 키 값 쌍을 저장할 수있는 내장 연관 데이터 유형입니다. 해시 테이블로 구현되어 저장된 값에 효율적으로 액세스 할 수 있습니다. 지도는 변하지 않으므로 프로그램 실행 중에 키와 값의 순서가 변경 될 수 있음을 의미합니다.
이동 중에 맵을 만들려면 map
키워드와 함께 make
Function을 사용합니다. 지도 선언에 대한 구문은 다음과 같습니다.
<code class="go">myMap := make(map[keyType]valueType)</code>
여기서는 keyType
가 키의 유형이며 valueType
값의 유형입니다. 예를 들어, 정수에 대한 문자열 맵을 만들려면 다음과 같습니다.
<code class="go">ages := make(map[string]int)</code>
복합 리터럴을 사용하여 선언시 값으로 맵을 초기화 할 수도 있습니다.
<code class="go">ages := map[string]int{ "Alice": 30, "Bob": 25, }</code>
맵에 키 값 쌍을 추가하려면 다음 구문을 사용합니다.
<code class="go">ages["Charlie"] = 35</code>
지도에서 값을 검색하려면 키를 사용합니다.
<code class="go">age := ages["Alice"]</code>
맵에 존재하지 않는 키의 값을 검색하려고하면 값 유형의 값이 0이됩니다. 값에 액세스하기 전에 키가 존재하는지 확인하려면 다중 값 과제를 사용할 수 있습니다.
<code class="go">age, exists := ages["David"] if !exists { fmt.Println("David is not in the map") }</code>
맵에서 키 값 쌍을 삭제하려면 delete
함수를 사용합니다.
<code class="go">delete(ages, "Bob")</code>
GO 프로그래밍에서지도를 사용하면 몇 가지 주요 이점이 있습니다.
len
과 같은 맵과 함께 작업 할 수있는 내장 기능 및 방법을 제공하여 항목 수를 얻고 항목을 제거하도록 delete
. 이동 중에지도를 효율적으로 반복하려면 for
Loop의 range
키워드를 사용할 수 있습니다. range
키워드를 사용하면 맵의 각 항목의 키와 값에 모두 액세스 할 수 있습니다. 예는 다음과 같습니다.
<code class="go">ages := map[string]int{ "Alice": 30, "Bob": 25, "Charlie": 35, } for key, value := range ages { fmt.Printf("Name: %s, Age: %d\n", key, value) }</code>
이렇게하면지도의 모든 키 가치 쌍이 반복되어 각 이름과 나이를 인쇄합니다. 맵이 본질적으로 변하지 않으므로 키 값 쌍을 방문하는 순서는 보장되지 않습니다.
키를 반복 해야하는 경우 다음 구문을 사용할 수 있습니다.
<code class="go">for key := range ages { fmt.Printf("Name: %s\n", key) }</code>
값을 반복 해야하는 경우 키에 빈 식별자 _
사용할 수 있습니다.
<code class="go">for _, value := range ages { fmt.Printf("Age: %d\n", value) }</code>
GO에서지도를 사용하면 피해야 할 몇 가지 일반적인 실수가 있습니다.
키 존재를 확인하지 않음 :지도에서 값을 검색 할 때 키가 존재하는지 확인하는 것이 쉽습니다. 그렇게하지 않으면 코드에서 예상치 못한 제로 값이 사용될 수 있습니다.
<code class="go">// Incorrect age := ages["David"] // If "David" doesn't exist, age will be 0 // Correct age, exists := ages["David"] if !exists { fmt.Println("David is not in the map") }</code>
Concurrent Writes : 올바른 동기화없이 여러 고어 라인의지도에 쓰면 인종 조건과 정의되지 않은 행동이 발생할 수 있습니다.
<code class="go">// Incorrect go func() { ages["Eve"] = 40 }() go func() { ages["Frank"] = 45 }() // Correct var mutex sync.Mutex go func() { mutex.Lock() ages["Eve"] = 40 mutex.Unlock() }() go func() { mutex.Lock() ages["Frank"] = 45 mutex.Unlock() }()</code>
비교할 수없는 유형을 키로 사용하면 키를 비교할 수 있어야하므로 키를 비교할 수 있으므로 슬라이스 나 맵과 같은 비교할 수없는 유형을 키로 사용하면 컴파일 오류가 발생합니다.
<code class="go">// Incorrect invalidMap := make(map[[]int]int) // Will not compile // Correct validMap := make(map[string]int)</code>
간과 맵 초기화 : 적절한 초기화없이 맵을 사용하려고하면 런타임 공황이 발생합니다.
<code class="go">// Incorrect var ages map[string]int ages["Alice"] = 30 // This will panic // Correct ages := make(map[string]int) ages["Alice"] = 30</code>
이러한 일반적인 실수를 피하면 GO 프로그램에서 맵을 효과적이고 안전하게 사용할 수 있습니다.
위 내용은 Go의지도는 무엇입니까? 당신은 그것들을 어떻게 만들고 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!