在Go中,使用 map 不需要引入任何库

  1. package main
  2. import "fmt"
  3. type PersonInfo struct {
  4. ID string
  5. Name string
  6. Address string
  7. }
  8. func main() {
  9. var personDB map[string] PersonInfo
  10. personDB = make(map[string] PersonInfo)
  11. personDB["111"] = PersonInfo{"111", "Tom", "Room204"} // 元素赋值
  12. personDB["222"] = PersonInfo{"222", "Jerry", "Room205"}
  13. person, ok := personDB["123"]
  14. fmt.Println("person:", person) // person: { }
  15. fmt.Println("ok:", ok) // ok: false
  16. }

也可以选择是否在创建时指定该 map 的初始存储能力,下面的例子创建了一个初始存储能力为100的 map

  1. myMap = make(map[string] PersonInfo, 100)

创建并初始化 map 的代码如下:

  1. myMap = map[string] PersonInfo {
  2. "1234": PersonInfo{"1", "Jack", "Room 101,..."},
  3. }

(1) 元素删除

Go语言提供了一个内置函数 delete() ,用于删除容器内的元素。下面我们简单介绍一下如何用 delete() 函数删除 map 内的元素:

  1. delete(myMap, "1234")

上面的代码将从 myMap 中删除键为“1234”的键值对。如果“1234”这个键不存在,那么这个调用将什么都不发生,也不会有什么副作用。但是如果传入的 map 变量的值是 nil ,该调用将导致程序抛出异常(panic)。

(2) 元素查找

  1. value, ok := myMap["1234"]
  2. if ok { // 找到了
  3. // 处理找到的value
  4. }