go学习笔记
基础
go 定义变量的几种方式
常量的声明
go基本数据类型
go语言中的流程控制
golang中的数组
切片
golang中的map 详解
golang 函数详解
内置函数 panic/recover
golang time包 以及日志函数
golang中的指针
golang 中的结构体
Golang 结构体 和 json互相转换 序列化 反序列化
Golang 中的 go mod 以及 Golang包 详解
golang 中的接口
golang goroutine channel 实现并发 和 并行
channel
goroutine 互斥锁 读写互斥锁
golang 反射
golang 标准库
io
strconv
工具 + blog
进程 线程 协程
空接口 类型断言
为Go项目编写Makefile
减小 Go 代码编译后的二进制体积
go windows下编译linux可执行文件
本文档使用 MrDoc 发布
-
+
首页
golang中的map 详解
map是一种无序的基于kay-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 go语言中map的定于语法如下: ``` map[keyType]valueType ``` 其中: * KeyType 表示键的类型 * valueType 表示键对应的值的类型 ## 定义map map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为: **make: 用于slice,map和channel 的初始化** ``` func main() { var mymap = make(map[string]string) mymap["key1"] = "value1" mymap["key2"] = "value2" fmt.Printf("mymap: %v\n", mymap) // map在声明时填充元素 var mymap1 = map[string]string{ "keys1": "values1", "keys2": "values2", "keys3": "values3", } fmt.Printf("mymap1: %v\n", mymap1) //第三种 声明map的方法 mymap2 := map[string]string{ "keys1": "values1", "keys2": "values2", "keys3": "values3", } fmt.Printf("mymap2: %v\n", mymap2) } ``` ## 遍历map ``` func main() { mymap2 := map[string]string{ "keys1": "values1", "keys2": "values2", "keys3": "values3", } for _, v := range mymap2 { fmt.Printf("v: %v\n", v) /* v: values3 v: values1 v: values2 */ } } ``` ## map crud ``` func main() { //创建map var mymap = map[string]string{ "username": "haha", "age": "20", } //查找keys s := mymap["age"] fmt.Printf("s: %v\n", s) //s: 20 //更新values mymap["age"] = "30" fmt.Printf("mymap[\"age\"]: %v\n", mymap["age"]) //mymap["age"]: 30 //删除 keys delete(mymap, "age") fmt.Printf("mymap: %v\n", mymap) //mymap: map[username:haha] } ``` ## slice 中存入 map类型的数据 ``` func main() { var myslice = make([]map[string]string, 3, 3) myslice[0] = map[string]string{ "username": "haha", "age": "23", } myslice[1] = map[string]string{ "username1": "haha1", "age": "23", } fmt.Printf("myslice: %v\n", myslice) } ``` 遍历 ``` func main() { var myslice = make([]map[string]string, 3, 3) myslice[0] = map[string]string{ "username": "haha", "age": "23", } myslice[1] = map[string]string{ "username1": "haha1", "age": "23", } fmt.Printf("myslice: %v\n", myslice) for _, v := range myslice { for map_k, map_v := range v { fmt.Printf("map_k: %v\t", map_k) fmt.Printf("map_v: %v\n", map_v) } } } ``` ## 值为slice 的 map ``` unc main() { var mymap = map[string][]string{ "key1": []string{"haha", "haha1", "haha2"}, "key2": []string{"haha3", "haha4", "a急急急"}, } fmt.Printf("mymap: %v\n", mymap) for k, v := range mymap { fmt.Printf("k: %v\n", k) for _, slice_v := range v { fmt.Printf("slice_v: %v\n", slice_v) } } } /* k: key1 slice_v: haha slice_v: haha1 slice_v: haha2 k: key2 slice_v: haha3 slice_v: haha4 slice_v: a急急急 */ ``` ## 判断是否存在 ``` m := make(map[string]string) m["test1"] = "test1" m["test2"] = "test2" for k, v := range m { fmt.Printf("%v %v \n", k, v) } value, exists := m["test1"] fmt.Printf("value %v exists %v", value, exists) //value test1 exists true ```
admin
2024年1月18日 21:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码