在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 简介map 类似于Java中的 map,是一种存储键值对的数据结构。 map 属于引用类型; 声明方式:var map1 map [keyType] valueType, 示例: // 声明及初始化 var map1 = make(map[int]int) map1[1] = 12 未初始化的map值为 nil,声明时不需要指定map的容量,map是可以动态增长,当 map 增长到容量上限时,map 的大小自动增加,最好在初始化时设置其容量的大小; keyType: 1. 任意可以用 == 或者 != 操作符比较的类型; 2. 只包含内建类型的 struct ; 3. 指针和接口类型; 4. 提供 Ke() 和 Hash() 方法的结构体,这样可以通过结构体的域计算出唯一的数字或者字符串的 key; 5. 数组、切片和含有数组和切片的结构体不能作为 key; valueType: 1. 任意类型,可以通过空接口类型存储任意值; 2. 函数类型,通过key选择要执行的函数 2. 基本操作2.1 添加元素map1[key] = value var a3 = make(map[int]int,5) a3[1]=1 2.2 获取元素value = map1[key] var a3 = make(map[int]int,5) a3[1]=1 valuea31 := a3[1] 2.3 判断 key 是否存在value1,isExist = map1[key1],value1 key1对应的值,isExist,bool值,表示是否存在这个 key1 // 验证 val1, isPresent = map1[key1] 形式判断 val1 到底是空值,还是不存在这个 key1 var a5 = make(map[int]int) a5[1] = 0 value3,isExist3 := a5[1] fmt.Printf("a5[1] value=%v,isExist=%t \n",value3,isExist3) value4,isExist4 := a5[2] fmt.Printf("a5[2] value=%v,isExist=%t \n",value4,isExist4) // 简写形式,判断 key 是否存在,并操作 value if value6,isExist6 := a5[1];isExist6{ fmt.Printf("value6 exist:%v, value:%v",isExist6,value6) } // 只判断 key 是否存在 if _,isExist6 := a5[1];isExist6{ fmt.Printf("value6 exist:%v",isExist6) } 2.4 删除元素delete(map1,key1) var a5 = make(map[int]int) a5[1] = 0 // 删除元素,不存在也不报错 delete(a5,1) delete(a5,123) 2.5 for-rangevar map1 = make(map[int]int) map1[1] = 12 map1[2] = 13 map1[12] = 2 for key, value := range map1 { fmt.Printf("map1 key=%v,value=%v \n",key,value) } 2.6 排序先将 key 存放到 slice ,再对 slice 进行排序, 然后按照 排序的 slice 输出 map // map1 初始化 var map1 = make(map[int]int) map1[1] = 12 map1[2] = 13 map1[12] = 2 // 存储 map1 的 key var slice = make([]int,3) i:= 0 for key := range map1 { slice[i]=key i++ } // 对 key 进行排序 sort.Ints(slice) // 输出排序后的 map1 for _, value := range slice { fmt.Println(value,"=",map1[value]) }
|
请发表评论