今天发现go的map结构居然可以直接用 ++ 当值… 好神奇
记录一下
package app
import (
"bufio"
"fmt"
"os"
)
func Count(){
counts := make(map[string]int)
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
if input.Text()=="end"{
break
}
counts[input.Text()]++
}
for line, n := range counts {
if n>1 {
fmt.Println(n,line)
}
}
fmt.Println("done")
}
counts[input.Text()]++ 等于
counts[input.Text()] = counts[input.Text()] + 1
然后java为什么不能这么写 go却可以呢
首先java的map只能放对象,不能放基本类型,自动拆装箱也不可以,所以不能放int也就没有加加
其次, java的map如果map.get(key)不存在会直接给出一个null, 所以自然没法加加, go的map如果第一次map[key]不存在,会使用定义的类型(这里是int)的默认值直接初始化(也就是0)