package main
var x = *new(*int)
var y *int = nil
func f() interface{} {
return y
}
func main() {
if f() == nil {
if x == nil {
println("A")
} else {
println("B")
}
} else {
if x == nil {
println("C")
} else {
println("D")
}
}
}
Choices:
Answer: C
Run it on Go play.
Key points:
f
always return a non-nil interface value.
new builtin function always returns a pointer pointing to a zero value.
That means dereferencing the pointer results a zero value.
The zero value of the *int
type is nil.