GO教程
GO控制语句
GO高级

Go Map

Go Map

在 Go 中,Maps 是键及其关联值的无序集合。它们非常适合快速查找值。键类型必须定义操作 == 和 !=,例如 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 operation

您可以使用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 Retrieve Element

语法:
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 中,Maps 就像 struct,但它需要键

Go Map of Struct

package main
import "fmt"
type Vertex struct {
   Latitude, Longitude float64
}
var m = map[string]Vertex{
   "lidihuo": Vertex{     40.68433,-74.39967,   },
   "SSS-IT": Vertex{     37.42202,-122.08408,  },
}
func main() {
   fmt.Println(m)
}
输出:
map[lidihuo:{40.68433-74.39967} SSS-IT:{37.42202-122.08408}]

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4