在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言 map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相应的键可以获取到值。 在一个map里所有的键都是唯一的,而且必须是支持==和!=操作符的类型,切片、函数以及包含切片的结构类型由于具有引用语义,不能作为映射的键,使用这些类型会造成编译错误。 创建与初始化package main import "fmt" func main() { //初始化 //1.定义同时初始化 var m1 map[int]string =map[int]string{1:"linlin",2:"sanye"} fmt.Println(m1) //2.自动推导类型 m2 := map[int]string{1:"linlin",2:"sanye"} fmt.Println(m2) //3.使用make创建 m3 :=make(map[int]string) fmt.Println(m3) //创建固定长度的map m4 := make(map[int]string,10) fmt.Println(m4) }
访问与赋值package main import "fmt" func main() { //初始化 m2 := map[int]string{1:"linlin",2:"sanye"} fmt.Println(m2) //map[1:linlin 2:sanye] m2[1] = "sanye" m2[2] = "linlin" fmt.Println(m2) //map[1:sanye 2:linlin] fmt.Println(m2[1],m2[2])//sanye linlin }
遍历Map的迭代顺序是不确定的,并且不同的哈希函数实现可能导致不同的遍历顺序。在实践中,遍历的顺序是随机的。每一次遍历都不相同。 当使用 package main import "fmt" func main() { m3 := map[int]string{0:"linlin",1:"sanye",2:"timi",3:"meyi"} for k,v := range m3{ fmt.Println("key:%d value:%s",k,v) } //判断map中key是否存在 if v,has :=m3[1];has{ //map[下标] fmt.Println("value=",v,"has=",has) } else{ fmt.Println("value=",v,"has=",has) } }
删除使用delete()函数,指定key值可以方便的删除map中的k-v映射。 package main import "fmt" func mapDelete(m map[int]string,key int) map[int]string{ delete(m,key) return m } func main() { m3 := map[int]string{0:"linlin",1:"sanye",2:"timi",3:"meyi"} fmt.Println(m3)//map[0:linlin 1:sanye 2:timi 3:meyi] delete(m3,1) //删除key值为2的map fmt.Println(m3)//map[0:linlin 2:timi 3:meyi] mapDelete(m3,0) fmt.Println(m3)//map[2:timi 3:meyi] }
map为引用类型map 也是引用类型。当 map 被赋值为一个新变量的时候,它们指向同一个内部数据结构。因此,改变其中一个变量,就会影响到另一变量。 package main import ( "fmt") func main() { personSalary := map[string]int{ "steve": 12000, "jamie": 15000, } personSalary["mike"] = 9000 fmt.Println("Original person salary", personSalary) newPersonSalary := personSalary newPersonSalary["mike"] = 18000 fmt.Println("Person salary changed", personSalary) } 上面程序中的第 14 行,
当 map 作为函数参数传递时也会发生同样的情况。函数中对 map 的任何修改,对于外部的调用都是可见的。
map的相等性与长度map相等性: map 之间不能使用 判断两个 map 是否相等的方法是遍历比较两个 map 中的每个元素。 map长度: package main import ( "fmt") func main() { personSalary := map[string]int{ "steve": 12000, "jamie": 15000, } personSalary["mike"] = 9000 fmt.Println("length is", len(personSalary)) //结果为3 } |
请发表评论