map
다른 언어의 해시 테이블이나 사전과 유사하게 데이터는 키-값 형식으로 저장됩니다(권장 학습: go)
key는 == 또는 != 비교 연산을 지원해야 합니다. 유형은 함수, 맵 또는 슬라이스일 수 없습니다.
키로 값을 검색하는 맵은 선형 검색보다 훨씬 빠릅니다.
맵은 make()를 사용하여 생성되며 :=
make([keyType]valueType의 약어를 지원합니다. ,cap ), cap은 용량을 나타내며 생략 가능
용량을 초과하면 자동으로 확장되지만 합리적인 초기값을 제공하도록 노력하세요
len()을 사용하여 요소 수를 가져옵니다
자동으로 키 추가- 값 쌍이 없으면 delete()를 사용하세요. 키-값 쌍을 삭제하세요
맵과 슬라이스를 반복하려면 범위에 사용하세요
맵의 선언과 기본값
// 声明 var m map[string]string // bool 的零值是false var m map[int]bool a, ok := m[1] fmt.Println(a, ok) // false false // int 的零值是0 var m map[int]int a, ok := m[1] fmt.Println(a, ok) // 0 false
맵이 선언되면 기본값 value는 nil입니다. 이때 값을 가져와 해당 유형을 반환합니다. 0 값(존재하지 않으면 0 값이 반환됨)
// 先声明map var m1 map[string]string // 再使用make函数创建一个非nil的map,nil map不能赋值 m1 = make(map[string]string) // 最后给已声明的map赋值 m1["a"] = "aa" m1["b"] = "bb" // 直接创建 m2 := make(map[string]string) // 然后赋值 m2["a"] = "aa" m2["b"] = "bb" // 初始化 + 赋值一体化 m3 := map[string]string{ "a": "aa", "b": "bb", } // ========================================== // 查找键值是否存在 if v, ok := m1["a"]; ok { fmt.Println(v) } else { fmt.Println("Key Not Found") } // 遍历map for k, v := range m1 { fmt.Println(k, v) } m := make(map[interface{} ]interface{}) m[1] = 56 m["str"] = "dfsdf" fmt.Println(m)
map 데이터 유형 초기화:
두 가지 방법: map[string ]string{} 또는 make(map[string]string)
초기화되지 않은 맵은 nil입니다.
초기화되지 않은 맵은 nil입니다. 이는 기본적으로 빈 맵과 동일합니다. 단, nil 맵은 값 추가를 허용하지 않습니다. 그것에. (nil 맵은 요소를 추가할 수 없다는 점을 제외하면 빈 맵과 동일합니다.)
따라서 맵이 nil인 경우 값을 얻을 때 오류가 보고되지 않지만(단지 사용할 수 없음) 오류가 발생합니다. 값이 추가되면 보고됩니다.
실제로 또 다른 차이점이 있습니다. nil 맵을 삭제하면 패닉이 발생하지만, 빈 맵을 삭제하면 아무 작업도 수행할 수 없습니다(패닉도 발생하지 않습니다). (이 차이점은 최신 Go 팁에서는 더 이상 존재하지 않습니다. 즉, nil 삭제 map도 패닉 상태가 됩니다) 패닉이 발생하지 않습니다)
fmt를 통해 지도를 인쇄할 때 빈 맵과 nil 맵의 결과는 동일합니다.
fmt를 통해 지도를 인쇄할 때 빈 맵과 nil 맵의 결과는 동일합니다. 둘 다 map[]입니다. 따라서 이때는 map이 비어 있는지 nil인지 판단하지 않고 map == nil로 판단한다.
Request의 Form 필드에 대한 경우입니다. ParseForm()이 직접 또는 간접적으로 호출되지 않으면 Form은 실제로 nil입니다. 그러나 출력하지만 map[]인 경우 약간 혼란스러울 수 있습니다. . 소스 코드를 추적해 보면 Form이 전혀 초기화되지 않은 것을 알 수 있습니다.
FormValue() 메서드에서는 Form이 nil인지 판단한 후 ParseForm() 메서드를 호출할지 여부를 결정합니다. 물론 ParseForm() 메서드를 수동으로 호출할 수도 있습니다
위 내용은 golang 맵에는 make가 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!