1. 程式人生 > >go map數據結構

go map數據結構

logs alt pri light type var png lap 技術分享

map數據結構

key-value的數據結構,又叫字典或關聯數組

  • 聲明:
var map1 map[keytype]valuetype
var a map[string]string
var a map[string]int
var a map[int]string
var a map[string]map[string]string

備註:聲明是不會分配內存的,初始化需要make

樣例一:

func testMap() {
	var a map[string]string
        a = make(map[string]string, 10)
	a["abc"] = "efg"
	a["abc"] = "efg"
	a["abc1"] = "efg"
	fmt.Println(a)
}

樣例二:

func testMap() {
        a := make(map[string]string, 10)
	a["abc"] = "efg"
	a["abc"] = "efg"
	a["abc1"] = "efg"
	fmt.Println(a)
}

樣例三:

func testMap() {
	var a map[string]string = map[string]string{
		"key": "value",
	}
	a["abc"] = "efg"
	a["abc"] = "efg"
	a["abc1"] = "efg"
	fmt.Println(a)
}

技術分享

  • map相關操作
var a map[string]string = map[string]string{“hello”: “world”}
a = make(map[string]string, 10)

插入和更新:a[“hello”] = “world”

查找:Val, ok := a[“hello”]

遍歷:

for k, v := range a { 
    fmt.Println(k,v) 
}

刪除:delete(a, “hello”)

長度:len(a)

func trans(a map[string]map[string]string) {
	for k, v := range a {
		fmt.Println(k)
		for k1, v1 := range v {
			fmt.Println("\t", k1, v1)
		}
	}
}

func testMap4() {
	a := make(map[string]map[string]string, 100)
	a["key1"] = make(map[string]string)
	a["key1"]["key2"] = "abc"
	a["key1"]["key3"] = "abc"
	a["key1"]["key4"] = "abc"
	a["key1"]["key5"] = "abc"

	a["key2"] = make(map[string]string)
	a["key2"]["key2"] = "abc"
	a["key2"]["key3"] = "abc"

	trans(a)
	delete(a, "key1")
	fmt.Println()
	trans(a)
	fmt.Println(len(a))
}

  • 多層map
func testMap2() {
	a := make(map[string]map[string]string, 100)
	a["key1"] = make(map[string]string)
	a["key1"]["key2"] = "abc"
	a["key1"]["key3"] = "abc"
	a["key1"]["key4"] = "abc"
	a["key1"]["key5"] = "abc"
	fmt.Println(a)
}

技術分享

  • slice of map
func testMap5() {
	var a []map[int]int
	a = make([]map[int]int, 5)

	if a[0] == nil {
		a[0] = make(map[int]int)
	}
	a[0][10] = 10
	fmt.Println(a)
}

技術分享

go map數據結構