提示:以下是我对官方指南的摘要
m = make(map[string]string)
m["Hello"] = "World"
当然key 跟value 都可以是struct,这里演示一下value是struct
type Vertex struct {
Lat, Long float64
}
var m = map[string]Vertex{
"Bell Labs": Vertex{
40.68433, -74.39967,
},
"Google": Vertex{
37.42202, -122.08408,
},
}
可以省略Vertex这个类名
var m2 = map[string]Vertex{
"Bell Labs": {40.68433, -74.39967},
"Google": {37.42202, -122.08408},
}
func main() {
m := make(map[string]int)
m["Answer"] = 42
fmt.Println("The value:", m["Answer"])
m["Answer"] = 48
fmt.Println("The value:", m["Answer"])
delete(m, "Answer")
fmt.Println("The value:", m["Answer"])
v, ok := m["Answer"]
fmt.Println("The value:", v, "Present?", ok)
}
题目如下:
实现 WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数
我的实现如下:
- 通过使用 strings.Fields(s) 把传过来的string转成word array,比如 strings.Fields(" a b a ")) => [“a” “b” “a”]
- 遍历Fields生成的result,注意遍历(利用range)的时候会有 k,v, 其中v才是要的string
- 利用map out[v] ++ (这里因为一开始map生成的时候value default是0才可以这么做的)
func WordCount(s string) map[string]int {
strs := strings.Fields(s)
var out = map[string]int{}
for _, v := range strs {
out[v] ++
}
return out
}
这里讲了
1. map的生成
2. map的赋值