Go 語言Map(集合)
Go 語言Map(集合)
Map 是一種無序的鍵值對的集合。Map 最重要的一點是通過 key 來快速檢索數據,key 類似於索引,指向數據的值。
Map 是一種集合,所以我們可以像疊代數組和切片那樣疊代它。不過,Map 是無序的,我們無法決定它的返回順序,這是因為 Map 是使用 hash 表來實現的。
定義 Map
可以使用內建函數 make 也可以使用 map 關鍵字來定義 Map:
/* 聲明變量,默認 map 是 nil */ var map_variable map[key_data_type]value_data_type /* 使用 make 函數 */ map_variable := make(map[key_data_type]value_data_type)
如果不初始化 map,那么就會創建一個 nil map。nil map 不能用來存放鍵值對
實例
下面實例演示了創建和使用map:
package main import "fmt" func main() { var countryCapitalMap map[string]string /*創建集合 */ countryCapitalMap = make(map[string]string) /* map插入key - value對,各個國家對應的首都 */ countryCapitalMap [ "France" ] = "Paris" countryCapitalMap [ "Italy" ] = "羅馬" countryCapitalMap [ "Japan" ] = "東京" countryCapitalMap [ "India " ] = "新德里" /*使用鍵輸出地圖值 */ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [country]) } /*查看元素在集合中是否存在 */ captial, ok := countryCapitalMap [ "美國" ] /*如果確定是真實的,則存在,否則不存在 */ /*fmt.Println(captial) */ /*fmt.Println(ok) */ if (ok) { fmt.Println("美國的首都是", captial) } else { fmt.Println("美國的首都不存在") } }
以上實例運行結果為:
France 首都是 Paris Italy 首都是 羅馬 Japan 首都是 東京 India 首都是 新德里 美國的首都不存在
delete() 函數
delete() 函數用於刪除集合的元素, 參數為 map 和其對應的 key。實例如下:
package main import "fmt" func main() { /* 創建map */ countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"} fmt.Println("原始地圖") /* 打印地圖 */ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } /*刪除元素*/ delete(countryCapitalMap, "France") fmt.Println("法國條目被刪除") fmt.Println("刪除元素後地圖") /*打印地圖*/ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } }
以上實例運行結果為:
原始地圖 India 首都是 New delhi France 首都是 Paris Italy 首都是 Rome Japan 首都是 Tokyo 法國條目被刪除 刪除元素後地圖 Italy 首都是 Rome Japan 首都是 Tokyo India 首都是 New delhi