Kav*_*ian 6
只是为了把事情说清楚。如果您运行此代码:
var m map[string]int64
log.Println(m == nil)
log.Printf("%T\n", m)
它将打印:
$ true
$ map[string]int64
mnilnil
mapnil
fmt.StringerString() stringnil
type someData struct {
someValue string
}
func (x *someData) String() string {
if x == nil {
return "NO PROPER DATA HERE!"
}
return x.someValue
}
然后如果我们运行:
var data *someData
log.Println(data)
data = new(someData)
data.someValue = "Aloha! :)"
log.Println(data)
输出将是:
$ NO PROPER DATA HERE!
$ Aloha! :)
nil