(一)Maps
一个map是映射到键值对的
值为 0 的map是 nil 值;一个nil 值的map并没有keys , 也不能添加值;
make 函数可以返回一个被赋予类型,且被初始化准备可以投入使用的map
package main
import "fmt"
type vertex struct{
x , y float64
}
var m map[string]Vertex
func main(){
m = make(map[string]vertex)
m["东风 不败"] = vertex{
120,40,
}
fmt.Println(m["东风"])
}
(二)Map文法
Map字段有些像结构体文法,但是Map字段的值是必须的
package main
import "fmt"
type vertex struct {
x, y float64
}
var m = map[string]vertex{
"迪迦 泰罗": vertex{
10.213, -34.98123,
},
"M78": Vertex{
677.56202, 122.31408,
},
}
func main() {
fmt.Println(m)
}
(三)Map字段知识扩展
如果顶级类型只是一个类型名字,你可以忽略来自字段的元素的类型
package main
import "fmt"
type vertex struct{
a,b string
}
var m = map[string]vertex{
"迪迦奥特曼":{"他是一个奥特曼","而且人又帅"},
"M78星云":{"这是奥特曼的故乡","名为M78"},
}
func main(){
fmt.Println(m)
}
(四)不同类型的映射
在映射 m 中插入或者升级一个元素
m[key] = elem
取回一个元素
elem = m[key]
删除一个元素
delete(m,key)
使用两个声明的值去测试一个值
elem , ok = m[key]
如果key 是在 m 中,则ok 为true , 否则为 false
如果key 不是在map 中,那么elem 是具有映射的类型的零值
如果 elem 或者 ok 任然没有被声明,你可以使用这样的短声明:
elem , ok := m[key]
实战演示
package main
import "fmt"
func main(){
m := make(map[string]int)
m["编号"]=27
fmt.Println("编号值为:",m["编号"])
m["编号"]=18
fmt.Println("编号值为:",m["编号"])
delete(m,"编号")
fmt.Println("编号值为:",m["编号"])
v , ok := m["编号"]
fmt.Println("编号值为:",v,"真假:",ok)
}