1. 程式人生 > 實用技巧 >Go的100天之旅-09Map

Go的100天之旅-09Map

目錄

簡介

雜湊表在平時可以說是最常見的一種資料結構,Go內建了map這種型別,就是雜湊表的一種實現。宣告一個map型別的變數要指定它key/value的型別,如下:

var m = map[keyType]valueType

其中key的型別必須支援==比較運算子的資料型別

下面簡單宣告一個keystring型別值是int型別的map

var m map[string]int

map型別的變數,是一個指向雜湊表的引用,類似指標或者slice。上面宣告的m由於沒有指向具體的雜湊表,所以它是nil的。通常宣告一個map後需要用內建的make進行初始化:

m = make(map[string]int)

這時變數m就指向了一個雜湊表結構的資料,接下來我們可以對它進行操作了。

常見的操作

給一個map中新增值:

m["a"] = 1

這裡的a可以是存在也可以不存在,如果存在就是替換這個a的值,如果不存在就是設定一個a的值為1

獲取map中的值:

i := map["a"]

如果鍵a不存在,則返回0map可以返回雙值,判斷key是否存在:

i, ok := m["a"]

i就是當前a存的值,ok就是鍵a是否存在,如果存在oktrue不存在為false

len可以獲取map當前的元素的個數:

n := len(m)

delete

可以刪除map中的值:

delete(m, "a")

遍歷map可以用range

for key, value := range m {
    fmt.Println("Key:", key, "Value:", value)
}

map初始化的是時候就可以賦值:

m := map[string]int{
    "rsc": 3711,
    "r":   2138,
    "gri": 1908,
    "adg": 912,
}