map 是一堆键值对的未排序集合;
在Go语言中,使用map不需要引入库,它是一种内置的数据类型。
package main
import "fmt"
type PersonInfo struct {
ID string
Name string
}
func main() {
var personDB map[string] PersonInfo
personDB = make(map[string] PersonInfo)
// 往这个map里插入几条数据
personDB["1"] = PersonInfo{"1", "张飞"}
personDB["2"] = PersonInfo{"2", "赵云"}
// 从这个map查找键为"1"的信息
person, ok := personDB["1"]
// ok是一个返回的bool型,返回true表示找到了对应的数据
if ok {
fmt.Println("找到数据,名字为", person.Name)
} else {
fmt.Println("没有找到键值为1的数据")
}
}
变量声明
var personDB map[string] PersonInfo
其中,personDB是声明的map变量名,string是键的类型,PersonInfo则是其中所存放的值的类型。
我们也可以使用内置函数make()来创建:
personDB = make(map[string] PersonInfo)
指定map的存储能力:
personDB = make(map[string] PersonInfo,50)
在创建时初始化:
personDB = map[string] PersonInfo{
"1": PersonInfo{"1", "张飞"},
}
元素赋值:
personDB["1"] = PersonInfo{"1", "张飞"}
personDB["2"] = PersonInfo{"2", "赵云"}
元素赋值:
personDB["1"] = PersonInfo{"1", "张飞"}
personDB["2"] = PersonInfo{"2", "赵云"}
元素删除:
Go语言提供了内置函数delete()用于删除容器内的元素。
delete(personDB,"1")
上述代码将删除键为“1”的值,如果“1”不存在,将什么都不发生。
元素的查找
person, ok := personDB["1"]
// ok是一个返回的bool型,返回true表示找到了对应的数据
if ok {
fmt.Println("找到数据,名字为", person.Name)
} else {
fmt.Println("没有找到键值为1的数据")
}
ok是一个bool型,如果存在键则返回true,否则返回false.