当前位置: 首页 > news >正文

180课时吃透Go语言游戏后端开发14:map类型

在这里插入图片描述

第14课我们来讲讲在Go语言中的map类型,map是一种无序的键值对集合,它类似于其他语言中的字典或哈希表。map非常实用,比如在游戏开发中,你可以用它来存储玩家的属性信息、游戏物品的属性等。

声明和初始化 map

使用make函数初始化
package mainimport ("fmt"
)func main() {// 使用make函数创建一个map,键为string类型,值为int类型scores := make(map[string]int)scores["赵云"] = 92scores["不知火舞"] = 88fmt.Println(scores)
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code014$ go run main.go
map[不知火舞:88 赵云:92]

在这个例子中,我们使用make函数创建了一个map,键是string类型,值是int类型。然后我们给map中添加了两个键值对,分别是 "赵云": 92"不知火舞": 88,最后打印出这个map

使用字面量初始化
package mainimport ("fmt"
)func main() {// 使用字面量初始化mapcities := map[string]int{"房间1":  15,"房间2": 28,}fmt.Println(cities)
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code014$ go run main.go
map[房间1:15 房间2:28]

这里通过字面量的方式直接初始化了一个map,包含两个房间的人数。

访问 map 中的值

package mainimport ("fmt"
)func main() {fruits := map[string]int{"苹果":  5,"西瓜": 3,}// 访问存在的键count, ok := fruits["苹果"]if ok {fmt.Printf("map中有%d个苹果\n", count)} else {fmt.Println("该map中没有找到苹果")}// 访问不存在的键count, ok = fruits["香蕉"]if ok {fmt.Printf("map中有%d根香蕉\n", count)} else {fmt.Println("该map中没有找到香蕉")}
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code014$ go run main.go
map中有5个苹果
该map中没有找到香蕉

在这个例子中,我们首先检查map中是否存在 "苹果" 这个键,如果存在就打印苹果的数量。然后检查是否存在 "香蕉" 这个键,由于不存在,所以打印提示信息。通过这种方式可以避免在访问不存在的键时出现运行时错误。

删除 map 中的键值对

package mainimport ("fmt"
)func main() {animals := map[string]int{"小狗":   2,"小猫":   3,"小鸟":  5,}fmt.Println("删除前:", animals)// 删除键为"cat"的键值对delete(animals, "小猫")fmt.Println("删除后:", animals)
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code014$ go run main.go
删除前: map[小狗:2 小猫:3 小鸟:5]
删除后: map[小狗:2 小鸟:5]

这里使用delete函数删除了map中键为 "小猫" 的键值对,然后打印出删除前后map的内容,展示了删除操作的效果。

遍历 map

package mainimport ("fmt"
)func main() {numbers := map[string]int{"一":   1,"二":   2,"三": 3,}// 遍历mapfor key, value := range numbers {fmt.Printf("%s: %d\n", key, value)}
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code014$ go run main.go
一: 1
二: 2
三: 3
leicw@Code AI世界:code014$ go run main.go
二: 2
三: 3
一: 1

在这个例子中,通过for... range循环遍历了map,并打印出每个键值对。需要注意的是,map是无序的,每次遍历的顺序可能不同。

map 作为函数参数

package mainimport ("fmt"
)// 向map中添加键值对的函数
func addToMap(m map[string]int, key string, value int) {m[key] = value
}func main() {data := make(map[string]int)addToMap(data, "年龄", 18)fmt.Println(data)
}

将以上代码写入main.go,运行结果如下:

leicw@Code AI世界:code014$ go run main.go
map[年龄:18]

这里定义了一个函数addToMap,它接受一个map作为参数,并向其中添加一个键值对。在main函数中,我们创建了一个空的map,然后调用addToMap函数向其中添加数据,最后打印出map的内容。这展示了map作为函数参数时的使用方式。

希望这些丰富的例子能帮助你深入理解Go语言中的map类型,你可以在实际的游戏开发中灵活运用它来解决各种问题,如果还有疑问,欢迎评论区留言。

每一次点赞,都是你无声的鼓励。每一次关注,都是我前行的动力。感谢有你,一起成长!

推荐阅读

  1. 零基础打造射击游戏《太空大战》1
  2. 180课时吃透Go语言游戏后端开发8:数组与切片的进阶用法
  3. 180课时吃透Go语言游戏后端开发国庆特别篇:270行代码制作烟花秀
http://www.dtcms.com/a/539919.html

相关文章:

  • AWS × Caddy:一键部署多站点反向代理 + 负载均衡网关(Terraform + ECS Fargate)
  • 外贸电子商务网站jcms内容管理系统
  • 做外贸哪些网站可以发免费信息线上课程怎么做
  • [无人机sdk] CameraModule | GimbalModule
  • 无人机桥梁巡检:以“空天地”智慧之力守护交通生命线
  • 【代码随想录算法训练营——Day51】图论——99.计数孤岛、100.最大岛屿的面积
  • d44:Sentinel 微服务流量控制与 Seata 分布式事务
  • Nacos注册中心:从服务注册到负载均衡
  • 归并排序和计数排序详解(非比较排序)
  • Nginx‌如何配置负载均衡,并使用对不同同负载均衡算法进行配置
  • 网站管理平台扩展插件广告人网站
  • HarmonyOS视频编解码与转码深度探索:从原理到分布式实践
  • 无人机数字资产采集技术架构与实践:从多维度感知到云端化建模的实现路径
  • 无人机螺旋桨运行技术解析
  • 自己编辑网站怎么做的毕节做网站的公司
  • 【Linux】Linux下基本指令:man echo cp mv move less date grep zip tar 指令以及指令的本质
  • Nand flash和norflash对比
  • EXCEL(带图)转html【uni版】
  • 什么是Spring?
  • 网站建设 招标资质要求网站开发和ipv6
  • 专题:2025中国汽车行业Data+AI数智化转型与全球化白皮书|附340+份报告PDF、数据仪表盘汇总下载
  • 基于金仓KFS工具,破解多数据并存,浙人医改造实战医疗信创
  • 自主访问控制模型
  • Trilium非线性笔记测评:本地知识库+远程协作,构建你的第二大脑!
  • 网站颜色背景代码建设咨询网站
  • ⸢ 拾-Ⅰ⸥⤳ 威胁感知与响应建设方案:感知覆盖威胁识别
  • Sui 中的 epoch 和 检查点(checkpoint)
  • 【仿RabbitMQ的发布订阅式消息队列】--- 概念理解
  • 图书销售系统数据库设计方案
  • SpringBoot+MybatisPlus+自定义注解+切面实现水平数据隔离功能(附代码下载)