map的声明
package main
import "log"
// Vertex 大写开头的为Public对象, 必须写注释说明, golint会做检测
type Vertex struct {
Lat, Long float64
}
func main() {
// 使用 make 声明一个map, 键为string, 值为Vertex类型
var m = make(map[string]Vertex)
m["dog"] = Vertex{50, 100}
log.Println(m) //map[dog:{50 100}]
log.Println(m["dog"]) //{50 100}
// 也可使用有初始值的map[k]v声明
var m2 = map[string]Vertex{
"dog": Vertex{100, 150},
"cat": {200, 250}, // 可以忽略结构体的类型名
}
m2["fish"] = Vertex{300, 350}
log.Println(m2) // map[fish:{300 350} dog:{100 150} cat:{200 250}]
}
map的操作
package main
import (
"log"
)
// Vertex 大写开头的为Public对象, 必须写注释说明, golint会做检测
type Vertex struct {
Lat, Long float64
}
func main() {
// 也可使用有初始值的map[k]v声明
var m = map[string]Vertex{
"dog": {100, 150},
"cat": {200, 250},
}
// 插入或修改元素
m["fish"] = Vertex{300, 350}
// 获取元素, ok是来检测对象是否存在
var ele, ok = m["fish"]
log.Println(ele, ok) //Vertex{300, 350}, true
ele2, ok := m["monkey"]
log.Println(ele2, ok) //Vertex{0, 0}, false
// 删除
delete(m, "fish")
// 合并map
m2 := map[string]Vertex{
"dog2": {1000, 1500},
"cat2": {2000, 2500},
}
for k, v := range m2 {
m[k] = v
}
// map遍历
for k, v := range m {
log.Println("key:", k, "value:", v)
}
log.Println(m)
}
参考资料:
http://go-tour-zh.appspot.com/