package main
func main() {
var t1,t2 interface{}
println(t1==nil,t1==t2)
t1,t2=100,100
println(t1==t2)
t1,t2=map[string]int{},map[string]int{}
println(t1==t2)
}
golang小白请教两个问题
- map[string]int{}中的int{}是什么意思?它与map[string]int有什么区别吗?
- 为什么t1,t2=map[string]int{},map[string]int{} 这行代码会报错,panic: runtime error: comparing uncomparable type map[string]int?
map[string]int{}
括号代表初始化(通过括号或者make),map如果只定义变量不初始化,默认值为nil
。没有括号那就只是定义了这么一个map[string]int
类型而已,使用必须要初始化,不然直接报错。你报错的代码是
println(t1==t2)
这一行,因为go是静态语言,map
是一个复杂类型,你自己创建的类型,底层根本就没有实现=
这个操作。所以不能对比。uncomparable type
不可比较的类型