在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
go开发手册: https://studygolang.com/pkgdoc 一、什么是map有资料翻译成地图、映射或字典。但是大多数习惯上翻译成集合。
2、使用map的注意细节: (Invalid map key type: must not be must not be a function , map or slice)
二、map的使用1、map的声明 map中key可以是:int、float、bool、string、数组; 一定不可以是:切片、函数、map package main import ( "fmt" ) func main() { //map的声明 一(var 变量名 map[key的类型]value的类型 ) var map1 map[string]string fmt.Printf("%T,%v,%v \n", map1, map1, map1 == nil) //map[string]string,map[],true //map声明 二 map2 := make(map[string]string) fmt.Printf("%T,%v,%v \n", map2, map2, map2 == nil) //map[string]string,map[],false } 2、map的初始化 package main import ( "fmt" ) func main() { //map的声明 一(var 变量名 map[key的类型]value的类型 ) var map1 map[string]string fmt.Println("map的长度", len(map1)) //在声明的同时初始化数据 var map2 = map[string]string{ "sz": "张三", "ls": "李四", } fmt.Println("map=", map2) //先声明 然后再赋值 map3 := make(map[string]string) map3["ww"] = "王五" map3["lb"] = "刘备" fmt.Println("map=", map3) } 3、map的CURD package main import ( "fmt" ) func main() { //=========在声明的同时初始化数据 var map2 = map[string]string{ "zs": "张三", "ls": "李四", } //=========map添加数据 map2["lb"] = "刘备" //=========map的遍历 for k, v := range map2 { fmt.Println("k=", k, " v=", v) } //=========根据key检测值是否存在 v, ok := map2["sz"] fmt.Println("v=", v, " ok=", ok) //v= 张三 ok= true v1, ok1 := map2["sssss"] fmt.Println("v=", v1, " ok=", ok1) //v= ok= false if value, key := map2["lb"]; key { fmt.Println("元素的值=", value) } //=========修改map中key对应的value map2["zs"] = "zhangshan" fmt.Println("update=", map2) //=========delete 删除map中的元素 //该函数没有返回值,如果删除不存在的key程序不会报错 fmt.Println("delete befor=", map2) delete(map2, "lb") delete(map2, "HHHHHHHHHHHHHH") fmt.Println("delete after=", map2) //=========清空map (go语言没有清空的函数,如果要清空,就是直接赋新的map) map2 = map[string]string{} //map2 = make(map[string]string) fmt.Println("clear=", map2) //map是引用类型 } 4、map是引用类型 package main import ( "fmt" "container/list" ) func main() { //初始薪资 salary := map[string]float64 { "Steven":15000, "Josh":20000, "Daniel":5000, } fmt.Println("初始薪资",salary) //调薪后 newSalary := salary newSalary["Daniel"] = 8000 fmt.Println("调薪后:" , newSalary) fmt.Println("原始薪资salary是否受影响:" , salary) //定期涨薪 changeSalary(salary) fmt.Println("原始薪资salary是否受影响:" , salary) } //定期涨薪 func changeSalary(m map[string]float64) { for k :=range m { m[k] *= 1.1 } }
|
请发表评论