(一)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)
}