package main import "fmt" type I interface{ Print() } type A struct{} func(a *A) Print(){} func New1() I{ var a *A = nil return a } func New2() I{ var a I = nil return a } func main(){ a := New1() if a == nil { fmt.Println("a is nil") }else{ fmt.Println("a is not nil") //執行 }
b := New2() if b == nil { fmt.Println("b is nil") //執行 }else{ fmt.Println("b is not nil") } }
Golang的interface 要值和類型都為nil 才等於 nil,所以判斷返回值的時候要小心