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" ] = "巴黎"
    countryCapitalMap [ "Italy" ] = "羅馬"
    countryCapitalMap [ "Japan" ] = "東京"
    countryCapitalMap [ "India " ] = "新德里"

    /*使用鍵輸出地圖值 */
    for country := range countryCapitalMap {
        fmt.Println(country, "首都是", countryCapitalMap [country])
    }

    /*檢視元素在集合中是否存在 */
    capital, ok := countryCapitalMap [ "American" ] /*如果確定是真實的,則存在,否則不存在 */
    /*fmt.Println(capital) */
    /*fmt.Println(ok) */
    if (ok) {
        fmt.Println("American 的首都是", capital)
    } else {
        fmt.Println("American 的首都不存在")
    }
}

以上例項執行結果為:

France 首都是 巴黎
Italy 首都是 羅馬
Japan 首都是 東京
India  首都是 新德里
American 的首都不存在

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