map
map[key]Value
-
-
key是唯一的,添加重复的key会覆盖之前的元素.
-
var m map[string]int fmt.Println(m == nil) //输出:true fmt.Printf("%p", m) //输出:0x0
- map读写数据时并不是并发安全的,可以结合RWMutex保证并发安全(RWMutex在后面讲解)
-
使用make函数实例化一个没有初始值的map
m := make(map[string]string) fmt.Println(m==nil)//输出:false fmt.Printf("%p", m)//输出:内存地址
-
-
map中元素键值对语法满足: key:value
-
-
m := map[string]string{"name": "smallming", "address": "北京海淀"} m1 := map[string]string{ "name": "smallming", "addresss": "北京海淀", } fmt.Println(m, m1)
操作map中的元素
-
使用key判断,如果key不存在向map中新增数据,如果key存在会覆盖map中元素
m := make(map[string]int) m["money"] = 5 fmt.Println(m) //输出:map[money:5] m["money"] = 6 fmt.Println(m) //map[money:6]
-
-
如果key存在执行删除元素
-
-
m := make(map[string]int) m["money"] = 5 delete(m, "没有的key") fmt.Println(m) //输出:map[money:5] delete(m, "money") fmt.Println(m) //输出:map[]
-
-
使用:map变量[key]获取key对应的值
-
如果key不存在返回map[key]Value中Value类型的默认值.例如:Value是string类型就返回""
-
返回值可以是一个,也可以是两个.
-
一个表示key对应的值
-
-
-
m := map[string]string{"name": "smallming", "address": "北京海淀"} fmt.Println(m["name"]) //输出:smallming fmt.Println(m["age"]) //输出:空字符串 value, ok := m["age"] fmt.Println(value, ok) //输出:空字符串 false
- 如果希望把map中所有元素都遍历,可以使用for结合range实现
m := map[string]string{"name": "smallming", "address": "北京海淀"} //range遍历map时返回值分别表示key和value for key, value := range m { fmt.Println(key, value) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人