兄弟连Go语言培训教程复合类型3:映射

XDLGo · · 31 次点击 · 开始浏览    置顶
  Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,具有很高的生产效率,而且更加安全、支持并行进程。此外,不得不承认,简洁、快速、安全、并行、有趣、源,内存管理、数组安全、编译迅速等特色都使得Go语言更加吸引人,为缓解企业对Go语言人才需求,目前兄弟连教育已开设Go语言与区块链培训课程。 映射概述 映射(map)是键值对形成的集合 键值的类型都是任意的 可以根据键快速的查询值,而无须遍历 创建map 可以通过声明map[keytype]valuetype的方式创建map 也可以通过make(map[keytype]valuetype,size)的方式来创建,size不指定时默认长度为0 以map[key]和map[key]=value的方式可以访问和修改键值 func demo81() { //var mmp = map[string]int{} //var mmp map[string]int //var mmp = map[string]int{"代码量":10000,"酒量":20} //通过内建函数make创建 //mmp := make(map[string]int) //创建一个string为键,值为任意类型的map mmp := make(map[string]interface{}) //丢入键值对到map中 mmp["name"]="西门东" mmp["sex"]="male" mmp["hobby"]="female" mmp["rmb"]=0.5 fmt.Printf("type=%T,value=%v,len=%d\n", mmp, mmp, len(mmp)) } 删除键值对 通过内置函数delete(map,key)的方式可以删除一个键值对 func demo82() { //创建一个string为键,值为任意类型的map mmp := make(map[string]interface{}) //丢入键值对到map中 mmp["name"] = "西门东" mmp["sex"] = "male" mmp["hobby"] = "female" mmp["rmb"] = 0.5 //删除hobby对应的键值对 delete(mmp, "hobby") fmt.Println(mmp) } 修改键值对 func demo83() { //创建一个string为键,值为任意类型的map mmp := make(map[string]interface{}) //丢入键值对到map中 mmp["name"] = "西门东" mmp["sex"] = "male" mmp["hobby"] = "female" mmp["rmb"] = 0.5 //修改特定的键值对 mmp["hobby"] = [...]string{"抽烟", "喝酒", "去浪"} mmp["rmb"] = -29999.5 mmp["最爱的书籍"] = "平凡的世界" fmt.Println(mmp) } map的查询和遍历 可以通过value := map[key]的方式得到key对应的value,当key不存在时得到的是nil 为了避免访问一个并不存在的键得到空值带来的逻辑错误,可以通过value,ok:=map[key]的方式进行带校验的查询,当ok为true时代表有值,否则代表key并不存在 range关键字对map的遍历,可以同时得到键值对的key和value,也可以仅仅得到key func demo84() { //创建一个string为键,值为任意类型的map mmp := make(map[string]interface{}) //丢入键值对到map中 mmp["name"] = "西门东" mmp["sex"] = "male" mmp["hobby"] = "female" mmp["rmb"] = 0.5 //没有校验的查询,当key不存在时value为<nil> value1 := mmp["sex"] fmt.Println("sex=",value1) value1 = mmp["sex2"] //sex2= <nil> fmt.Println("sex2=",value1) //带有校验的查询 value2, ok := mmp["最爱的书"] if ok == true { fmt.Println(value2) } else { fmt.Println("东哥:洒家没有最爱的书,查你妹") } //遍历键值 for key, value := range mmp { fmt.Println(key, value) } //遍历所有键 fmt.Println("key := range mmp") for key := range mmp { fmt.Println(key) } } 更多区块链视频教程/源码/课件/学习资料-企鹅QUN:591229276
31 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传