日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go map数据结构

發布時間:2023/11/30 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go map数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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]stringa = 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 testMapSlice() {s := make([]map[string]int, 10)for i := 0; i < len(s); i++ {s[i] = make(map[string]int, 100)}s[0]["abc"] = 100s[0]["qwe"] = 100s[5]["abc"] = 100fmt.Println(s) }

備注:上面第一次make是切片的長度,第二次make是map的容量

?

  • map排序

a.?先獲取所有key,把key進行排序

b. 按照排序好的key,進行遍歷

func testMapSort() {var a map[int]inta = make(map[int]int, 5)a[8] = 10a[3] = 10a[2] = 10a[1] = 10a[18] = 10var keys []intfor k, _ := range a {keys = append(keys, k)//fmt.Println(k, v)}sort.Ints(keys)for _, v := range keys {fmt.Println(v, a[v])} }

?

  • map反轉

初始化另外一個map,把key、value互換即可

func test() {var a map[string]intvar b map[int]stringa = make(map[string]int, 5)b = make(map[int]string, 5)a["abc"] = 101a["efg"] = 10fmt.Println(a)for k, v := range a {b[v] = k}fmt.Println(b) }

?

轉載于:https://www.cnblogs.com/shhnwangjian/p/7446995.html

總結

以上是生活随笔為你收集整理的go map数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。