go语言支持map类型,map类型是一种键值(key/value)存储的哈希数据结构,读写数据都是通过key进行操作。
1.定义map类型
map类型语法:
var m map[key类型]value类型
定义一个map类型变量,需要指定map的key是什么数据类型,value(值)是什么数据类型。
例子:
// 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类型变量。
语法:
make(map[key类型]value类型)
例子:
// 定义一个map
var m map[string]int
// 初始化map
m = make(map[string]int)
通过短变量声明符,可以快速定义和初始化一个map
// 不需要预先定义变量m的类型,直接通过短变量声明符(:=),直接定义和初始化变量
m := make(map[string]string)
主要:map必须要先初始化才能使用。
3.读写数据
读写数据的操作方式,类似数组,通过 [] 符号引用key的值。
语法:
m[key]
key是什么类型的数据,就传入什么类型的值,例如: string类型的key, 写法为m["key"], int类型的key, 写法为m[123] 。
例子:
package main
import "fmt"
func main() {
// 定义并初始化map
m := make(map[string]int)
// 保存一个键值对,将key = tizi的值设置为100
m["tizi"] = 100
// 读取key = tizi 的值, 这里得到的值是100
v := m["tizi"]
fmt.Println(v)
}
4.判断key是否存在
语法:
elem, ok = m[key]
第一个返回值elem是key的值,第二个返回值ok表示key是否存在。
例子:
package main
import "fmt"
func main() {
// 定义并初始化map
m := make(map[string]string)
m["tizi"] = "https://www.tizi365.com"
v, ok := m["tizi"]
// 判断key是否存在
if ok {
fmt.Println("key存在, 值等于", v)
} else {
fmt.Print("key不存在!")
}
}
输出:
key存在, 值等于 https://www.tizi365.com
5.删除数据
语法:
delete(m, key)
删除map中的指定key的数据
例子:
package main
import "fmt"
func main() {
// 定义并初始化map
m := make(map[string]string)
m["tizi"] = "https://www.tizi365.com"
fmt.Println(m)
// 删除key=tizi的数据
delete(m, "tizi")
fmt.Println(m)
}
输出:
map[tizi:https://www.tizi365.com]
map[]