go语言支持map类型,map类型是一种键值(key/value)存储的哈希数据结构,读写数据都是通过key进行操作。
1.定义map类型
map类型语法:
代码语言:javascript复制var m map[key类型]value类型
定义一个map类型变量,需要指定map的key是什么数据类型,value(值)是什么数据类型。
例子:
代码语言:javascript复制// key是字符串类型,value是int类型
var m map[string]int
// key是字符串类型,value是string类型
var m2 map[string]string
// key是字符串类型,value是User结构体类型
var m3 map[string]User
2.初始化map
没有初始化的map变量,默认值是nil,需要通过make初始化map类型变量。
语法:
代码语言:javascript复制make(map[key类型]value类型)
例子:
代码语言:javascript复制// 定义一个map
var m map[string]int
// 初始化map
m = make(map[string]·1)
通过短变量声明符,可以快速定义和初始化一个map
代码语言:javascript复制// 不需要预先定义变量m的类型,直接通过短变量声明符(:=),直接定义和初始化变量
m := make(map[string]string)
主要:map必须要先初始化才能使用。
3.读写数据
读写数据的操作方式,类似数组,通过 [] 符号引用key的值。
语法:
代码语言:javascript复制m[key]
key是什么类型的数据,就传入什么类型的值,例如:string类型的key, 写法为m["key"], int类型的key, 写法为m[123] 。
例子:
代码语言:javascript复制package main
import "fmt"
func main() {
// 定义并初始化map
m := make(map[string]int)
// 保存一个键值对,将key = xj的值设置为100
m["xj"] = 100
// 读取key = xj 的值, 这里得到的值是100
v := m["xj"]
fmt.Println(v)
}
4.判断key是否存在
语法:
代码语言:javascript复制elem, ok = m[key]
第一个返回值elem是key的值,第二个返回值ok表示key是否存在。
例子:
代码语言:javascript复制package main
import "fmt"
func main() {
// 定义并初始化map
m := make(map[string]string)
m["xj"] = "https://www.xj.com"
v, ok := m["xj"]
// 判断key是否存在
if ok {
fmt.Println("key存在, 值等于", v)
} else {
fmt.Print("key不存在!")
}
}
输出:
代码语言:javascript复制key存在, 值等于 https://www.xj.com
5.删除数据
语法:
代码语言:javascript复制delete(m, key)
删除map中的指定key的数据
例子:
代码语言:javascript复制package main
import "fmt"
func main() {
// 定义并初始化map
m := make(map[string]string)
m["xj"] = "https://www.xj.com"
fmt.Println(m)
// 删除key=tizi的数据
delete(m, "xj")
fmt.Println(m)
}
输出:
代码语言:javascript复制map[tizi:https://www.xj.com]
map[]
参考:https://www.tizi365.com/
Go两周入门系列
Go两周入门系列-Golang介绍
Go两周入门系列-go语言开发环境
Go两周入门系列-基本数据类型
Go两周入门系列-运算符
Go两周入门系列-指针
Go两周入门系列-流程控制语句
Go两周入门系列-函数
Go两周入门系列-数组和切片(slice)
Go两周入门系列-结构体(struct)
Go两周入门系列-Interface接口