1. 程式人生 > >go語言之 map集合

go語言之 map集合

Map 是一種無序的鍵值對的集合。
Map 最重要的一點是通過 key 來快速檢索資料,key 類似於索引,指向資料的值。
Map 是一種集合,所以我們可以像迭代陣列和切片那樣迭代它。不過,Map 是無序的,我們無法決定它的返回順序,
這是因為 Map 是使用 hash 表來實現的
下面看具體例項:

package main

import (
	"fmt"
)
// func myPrint(a map) {
// 	fmt.Printf("T=%T v=%v \n",a,a)
// }

func main() {
	fmt.Println("ok")
	// 定義map的方法
	/*
	宣告變數,預設 map 是 nil
	var map_variable map[key_data_type]value_data_type
	使用 make 函式
	map_variable := make(map[key_data_type]value_data_type)
	*/
	var new_map map[string]string
	new_map = make(map[string]string) // 必須要這樣建立的原因,因此使用切片的方法使這個集合可以在後面再被增加操作
	// 如果不初始化 map,那麼就會建立一個 nil map。nil map 不能用來存放鍵值對

	// 下面就是進行了初始化操作的map
	new_map1 := map[string]string{
		"name":"asd",
	}

	var countryCapitalMap map[string]string /*建立集合 */
	countryCapitalMap = make(map[string]string)
	
	new_map ["test"] = "aea"
	new_map ["new"] = "26"
	fmt.Println(new_map)
	// 並且這個初始化的map;可以可以再增加的
	new_map1["age"] = "28"
	fmt.Println(new_map1)

    /* map插入key - value對,各個國家對應的首都 */
    countryCapitalMap [ "France" ] = "Paris"
    countryCapitalMap [ "Italy" ] = "羅馬"
    countryCapitalMap [ "Japan" ] = "東京"
    countryCapitalMap [ "India " ] = "新德里"

	fmt.Println(countryCapitalMap)
    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("美國的首都不存在")
	}
	// 使用delete函式刪除map裡面的值
	delete(countryCapitalMap,"Japan")
	fmt.Println(countryCapitalMap)
}