为了账号安全,请及时绑定邮箱和手机立即绑定

Go(4 [Map])

标签:
JavaScript

Map简介:

 key-value的数据结构,又叫字典或关联数组

Map数据结构:

    map是引用类型

写法:var map1 map[keytype]valuetype

一:字典声明

注意:声明是不会分配内存的,初始化需要make

所以:可以简写为 test :=make(map[string]int,10)

    --> 创建一个test字典: key类型为string,value类型为int,长度为10.  (如果超出会panic,index out of range)

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

var a map[string]inta = make(map[string]int,10)a["abc"] = 200a["abc"] = 1200a["hello"] = 222

二:Map操作

var c map[string]string = map[string]string{"hi":"word"}c["cc"] = "aaa"

插入:

a[“hello”] = “world”

查找:

//字典查找:通过key查找val.// --返回2个元素,一个是val,一个是布尔值//字典查找key时,如果只指定一个返回值,那找不到就是0//这种方法,不好确定,如果val是0呢? 那就尴尬了Val,exist:= a[“hello”]if exist{   fmt.Printf("val=%d\n",ok)}else {   fmt.Printf("not found %s\n",val)}

遍历:

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

删除:

//a字典//hello is keydelete(a,"hello")

长度:len(a)


示例:函数传递字典

func test2(a map[string]int)  {   a["one"] = 134}func mian(){//map 是引用类型,所有会修改原有mapa := make(map[string]int,10)test2(a)}

三:map中创建切片

栗子1:

func test4()  {   aa := make([]map[int]int, 5)   for i := 0; i < 5; i++ {      aa[i] = make(map[int]int)      aa[i][2] = 2   }   fmt.Println("test4",aa)}>>>test4 [map[2:2] map[2:2] map[2:2] map[2:2] map[2:2]]

栗子2:

func test3()  {   //创建切片,   //切片里面放置map   //默认map都是nil,需要赋值   s:=make([]map[string]int,10)   for i:=0;i<len(s);i++{      //赋值初始化      //100是map的容量.如果超了。底层会自动扩容      s[i] = make(map[string]int,100)   }   s[0]["aaa"]=100   s[0]["acc"]=100   s[0]["1aa"]=100   s[2]["ccc"]=100   fmt.Println("sss",s)}>>>sss [map[aaa:100 acc:100 1aa:100] map[] map[ccc:100] map[] map[] map[] map[] map[] map[] map[]]

四:Map排序

  1. 先获取所有key,把key排序

  2. 按照拍好序的key,进行遍历

var keys []stringfor k, v := range a {   fmt.Printf("a[%s] = %d\n", k, v)   keys = append(keys, k)}sort.Strings(keys)for _, k := range keys {   fmt.Printf("Sort,a[%s]=%d\n", k, a[k])}


声明是不会分配内存的,初始化需要make

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消