• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go map数据结构

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

 

  • map排序

a. 先获取所有key,把key进行排序

b. 按照排序好的key,进行遍历

func testMapSort() {
	var a map[int]int
	a = make(map[int]int, 5)

	a[8] = 10
	a[3] = 10
	a[2] = 10
	a[1] = 10
	a[18] = 10

	var keys []int
	for 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]int
	var b map[int]string

	a = make(map[string]int, 5)
	b = make(map[int]string, 5)

	a["abc"] = 101
	a["efg"] = 10

	fmt.Println(a)

	for k, v := range a {
		b[v] = k
	}

	fmt.Println(b)
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言开发环境安装发布时间:2022-07-10
下一篇:
c#动态创建存储过程中,提示'go'附近有语法错误解决方案发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap