interface{} nil判断
说来惭愧,第一次知道interface{}的空值nil判断与想象中不一样。
package main
import "fmt"
func main() {
var v1 interface{}
var v2 interface{} = (*int)(nil)
var v3 interface{} = 2
// true false false
fmt.Println(v1 == nil, v2 == nil, v3 == nil)
}
interface{}包括{type,value},需要额外类型为空时,才等于nil。
空map。可以读,但不可以写
func main() {
var m1 map[int]int
v1, ok := m1[1]
v2 := m1[2]
println(v1, ok, v2) // print 0 false 0
m1[1] = 1 // panic
}