Go使用map

本文概述

  • Go map示例
  • Go map插入和更新操作
  • Go map删除操作
  • Go map检索元素
  • Go结构map
【Go使用map】在Go中, map是键及其关联值的无序集合。它们非常适合快速查找值。键类型必须定义==和!=操作, 例如string, int, float。
因此, 数组, 切片和结构不能用作键类型, 但指针和接口类型可以。
当我们提供Key()或Hash()方法时, 可以将结构用作键, 以便可以从结构的字段中计算出唯一的数字键或字符串键。
映射是引用类型, 通常声明为:
var map1 map[keytype]valuetype

例如
var map1 map[int]string

Go map示例
package main import "fmt" func main (){ x := map[string]int{"Kate":28, "John":37, "Raj":20} fmt.Print(x) fmt.Println("\n", x["Raj"]) }

输出:
map[John:37 Raj:20 Kate:28] 20

Go map插入和更新操作更新和插入操作在go map中类似。如果映射不包含提供的密钥, 则将执行插入操作, 如果映射中存在密钥, 则将进行更新操作。
package main import "fmt" func main() { m := make(map[string]int) fmt.Println(m) m["Key1"] = 10 m["Key2"] = 20 m["Key3"] = 30 fmt.Println(m) m["Key2"] = 555 fmt.Println(m) }

输出:
map[] map[Key3:30 Key1:10 Key2:20] map[Key1:10 Key2:555 Key3:30]

Go map删除操作你可以使用delete()函数在Go Map中删除元素。
句法:
delete(map, key)

例:
package main import "fmt" func main() { m := make(map[string]int) m["Key1"] = 10 m["Key2"] = 20 m["Key3"] = 30 fmt.Println(m) delete(m, "Key3") fmt.Println(m) }

输出:
map[Key1:10 Key2:20 Key3:30] map[Key2:20 Key1:10]

Go map检索元素句法:
elem = m[key]

例:
package main import "fmt" func main() { m := make(map[string]int) m["Key1"] = 10 m["Key2"] = 20 m["Key3"] = 30 fmt.Println(m) fmt.Println("The value:", m["Key2"]) }

输出:
map[Key1:10 Key2:20 Key3:30] The value: 20

我们还可以使用两个值示例来测试表中是否存在键
句法:
elem, ok = m[key]

如果key不存在, 则elem的值是元素类型的默认值。
如果elem的类型为int, 则elem的值为零。
package main import "fmt" func main() { m := make(map[string]int) m["Key1"] = 10 m["Key2"] = 20 m["Key3"] = 30 fmt.Println(m) v, ok := m["Key2"] fmt.Println("The value:", v, "Present?", ok) i, j := m["Key4"] fmt.Println("The value:", i, "Present?", j) }

输出:
map[Key1:10 Key2:20 Key3:30] The value: 20 Present? true The value: 0 Present? false

在Go中, map就像struct, 但是它需要键
Go结构map
package main import "fmt" type Vertex struct { Latitude, Longitude float64 } var m = map[string]Vertex{ "srcmini": Vertex{40.68433, -74.39967, }, "SSS-IT": Vertex{37.42202, -122.08408, }, } func main() { fmt.Println(m) }

输出:
map[srcmini:{40.68433 -74.39967} SSS-IT:{37.42202 -122.08408}]

    推荐阅读