map--字典
map的基本使用:
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则是其中存放值的类型
- 创建:
使用go语言内置的函数make()来创建一个新map,例:
PersonDB = make(map[string] PersonInfo)
也可以选择是否在创建时置顶该map的初始存储能力,例:
PersonDB = make(map[string] PersonInfo,100)
创建并初始化map,例:
PersionDB = map[string] PersionInfo{
"1234":PersionInfo{"1","wualin","xinyu"}
}
}
- 元素赋值
PersonDB["wualin"] = PersonInfo{"001","wualin","xinyu"}
- 元素删除
Go语言提供了一个内置函数delete(),用于删除容器内的元素
delete(PersionDB,"wualin")
如果键"wualin"不存在,那么这个调用将什么都不会发生
- 元素查找
根据关键字从map取数据,例:
value,ok := PersionDB["wualin"]
if ok{ // 找到了
// 处理找到的value
}
}
使用ok可以快速检查是否找到数据,不需要去判断value是否为空