12 Go語言基礎之map

2021-10-11 03:56:54 字數 2066 閱讀 9218

go語言中提供的對映關係容器為map,其內部使用雜湊表(hash)實現。

map是一種無序的基於key-value的資料結構,go語言中的map是引用型別,必須初始化才能使用。

map的定義語法如下:

map[keytype]valuetype
其中:

map型別的變數預設初始值為nil,需要使用make()函式來分配記憶體。語法為:

make(map[keytype]valuetype, [cap])
其中cap表示map的容量,該引數雖然不是必須的,但是我們應該在初始化map的時候就為其指定乙個合適的容量。

map中的資料都是成對出現的。

(1)使用make建立map資料型別
func

main()

輸出:

map

[小六:

100 小五:90]

90type of a:

map[

string

]int

(2)map也支援宣告的時候填充元素
func

main()

fmt.

println

(userinfo)

}

go語言中有個判斷map中鍵是否存在的特殊寫法,格式如下:

value, ok := map[key]
例子:

func

main()

else

}

如果key存在ok為true,v為對應的值;不存在ok為false,v為值型別的零值

使用for range遍歷map,如下:

func

main()

}

注意:

\color

注意: 遍歷map時的元素順序與新增鍵值對的順序無關。

使用delete()內建函式從map中刪除一組鍵值對,delete()函式的格式如下:

delete(map, key)
其中:

如下例項:

func

main()

}

切片中的元素為map型別時的操作:

func

main()

fmt.

println

("after init"

)// 對切片中的map元素進行初始化

mapslice[0]

=make

(map

[string

]string,10

) mapslice[0]

["name"]=

"小六"

mapslice[0]

["password"]=

"123456"

mapslice[0]

["address"]=

"掛傍山"

for index, value :=

range mapslice

}

map中值為切片型別的操作:

func

main()

value =

(value,

"北京"

,"上海"

) slicemap[key]

= value

fmt.

println

(slicemap)

}

返回主目錄

說明:文章參考於李文周老師筆記(看詳細內容請檢視源筆記)

12 Go語言基礎 通道 channel

說道通道 channel,不得不提go語言的併發程式設計模型 csp。go語言提倡,通過通訊來共享記憶體。goroutines 可以看做是go的乙個併發執行緒。基於系統執行緒。每啟動乙個goroutine的堆初始化占用是2 4k,可以擴大到1g。這也是go語言可以啟動成千上萬個goroutine的原...

1 2Go語言安裝

go語言編譯器及輔助工具可用於 windows macos 和linux 等作業系統。推薦盡可能使用作業系統自帶的包管理器來安裝go語言的 二進位制發行包 如 windows go1.11.4.windows amd64.msi maxos go1.11.4.darwin amd64.pkg lin...

12 Go語言 反射詳解

1.反射定義 可以在執行時動態獲取變數的相關資訊。import reflect 官方對此有個非常簡明的介紹,兩句話耐人尋味 反射提供一種讓程式檢查自身結構的能力。再精確點的描述是 反射是一種檢查inte ce變數的底層型別和值的機制 反射是困惑的源泉 想深入了解反射,必須深入理解型別和介面概念。2....