????????map
?是 Go 語言中非常重要的數據結構,常用于需要快速查找、統計或分組數據的場景。
map定義:
package mainimport "fmt"func main() {var m1 map[int]string // 創建一個 mapm2 := make(map[int]string) // 創建一個 map m3 := make(map[int]string, 10) // 創建一個長度為 10 的 mapm4 := map[int]string {1:"1111", 2:"2222", 3:"3333"} // 創建并初始化 mapv, ok := m1[1]if ok {fmt.Println(v, ok)} else {fmt.Println(v, ok)}for key, value := range m1 {fmt.Println("m1 的內容 :", key, value)}fmt.Println(m1)fmt.Println(m2)fmt.Println(m3)fmt.Println(m4)
}
map 的特征:
- map 是一種無序的鍵值對的集合
- map 的重要用途是是通過 key 來快速檢索數據,類似于hash值的效果,key 類似于索引,指向數據的值。
- map 遍歷?時返回的鍵值對的順序是不確定的。
- 在遍歷map的時候,如果鍵不存在,返回該類型的零值,例如 int 類型的零值是 0,string 類型的零值是 ""。
- map 和切片一樣,是引用類型。如果將map類型作為函數的參數,它們都引用同一個map。因此,對 map 的修改會影響到所有的引用。
- map 的 key 不允許重復,重復對同一個 key 進行賦值,值將被覆蓋,只保存最后一次賦值的內容
map的常見操作:
package mainimport "fmt"func main() {m1 := make(map [int]string)// 添加一個元素m1[1] = "1111"m1[2] = "2222"fmt.Println(m1)// 修改元素的值m1[1] = "壹壹壹壹"fmt.Println(m1)// map 的長度fmt.Println(len(m1))// 遍歷 map *** 只能這么遍歷,除非你單獨存了一份 key 值,可以通過遍歷 key 值,間接遍歷了mapfor k, v := range m1 {fmt.Println("遍歷 m1 ", k, v)}v, ok := m1[3]if !ok {fmt.Println("3 is not exist. v 的結果是零值 : ", v)}// 刪除元素 (根據 key 刪除某一個元素)delete(m1, 1)fmt.Println(m1)// 清空clear(m1)fmt.Println(m1)
}