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映射中,更新和插入操作类似。如果映射中不包含提供的键,则进行插入操作;如果键存在于映射中,则进行更新操作。

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映射中的元素。

语法:

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]  

如果键不存在,则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语言中,映射类似于结构体,但需要键。

Go结构体映射

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

输出:

map[JavaTpoint:{40.68433 -74.39967} SSS-IT:{37.42202 -122.08408}]

标签: Golang, Golang下载, Golang教程, Golang技术, Golang学习, Golang学习教程, Golang语言, Golang开发, Golang入门教程, Golang进阶教程, Golang高级教程, Golang面试题, Golang笔试题, Golang编程思想