在Go中,使用 map 不需要引入任何库
package main
import "fmt"
type PersonInfo struct {
ID string
Name string
Address string
}
func main() {
var personDB map[string] PersonInfo
personDB = make(map[string] PersonInfo)
personDB["111"] = PersonInfo{"111", "Tom", "Room204"} // 元素赋值
personDB["222"] = PersonInfo{"222", "Jerry", "Room205"}
person, ok := personDB["123"]
fmt.Println("person:", person) // person: { }
fmt.Println("ok:", ok) // ok: false
}
也可以选择是否在创建时指定该 map 的初始存储能力,下面的例子创建了一个初始存储能力为100的 map
myMap = make(map[string] PersonInfo, 100)
创建并初始化 map 的代码如下:
myMap = map[string] PersonInfo {
"1234": PersonInfo{"1", "Jack", "Room 101,..."},
}
(1) 元素删除
Go语言提供了一个内置函数 delete() ,用于删除容器内的元素。下面我们简单介绍一下如何用 delete() 函数删除 map 内的元素:
delete(myMap, "1234")
上面的代码将从 myMap 中删除键为“1234”的键值对。如果“1234”这个键不存在,那么这个调用将什么都不发生,也不会有什么副作用。但是如果传入的 map 变量的值是 nil ,该调用将导致程序抛出异常(panic)。
(2) 元素查找
value, ok := myMap["1234"]
if ok { // 找到了
// 处理找到的value
}