top
Loading...
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
北斗有巢氏 有巢氏北斗