map的基本使用:python
package main import "fmt" // 先声明 type PersonInfo struct { id string name string addr string } func main() { // map是一堆键值对的未排序集合,就像python中的字典同样 var PersonDB map[string] PersonInfo PersonDB = make(map[string] PersonInfo) //往map中插入几条数据 PersonDB["wualin"] = PersonInfo{"001","wualin","xinyu"} PersonDB["zhang"] = PersonInfo{"002","zhang","xiushui"} // 从map中取数据,查找关键字为"wualin"的数据 person1 := PersonDB["wualin"] fmt.Println(person1) fmt.Println(person1.name) // 经过 . 取map中的数据 person2,ok := PersonDB["zhang"] if ok{// ok是一个返回的bool类型,返回True则表示找到了对应的数据 fmt.Println(person2) } else{ fmt.Println("没有找到zhang...") } }
map的声明基本上没有多余的元素,好比:函数
var PersonDB map[string] PersonInfo
PersonDB是map变量名,string是键的类型,PersionInfo则是其中存放值的类型ui
使用go语言内置的函数make()来建立一个新map,例:code
PersonDB = make(map[string] PersonInfo)
也能够选择是否在建立时置顶该map的初始存储能力,例:排序
PersonDB = make(map[string] PersonInfo,100)
建立并初始化map,例:string
PersionDB = map[string] PersionInfo{ "1234":PersionInfo{"1","wualin","xinyu"} } }
PersonDB["wualin"] = PersonInfo{"001","wualin","xinyu"}
Go语言提供了一个内置函数delete(),用于删除容器内的元素io
delete(PersionDB,"wualin")
若是键"wualin"不存在,那么这个调用将什么都不会发生import
根据关键字从map取数据,例:容器
value,ok := PersionDB["wualin"] if ok{ // 找到了 // 处理找到的value } }
使用ok能够快速检查是否找到数据,不须要去判断value是否为空变量