golang中interface變量,底層兩個對象來存,一個是type、一個是value,只有type、value都為nil時(shí),interface變量才是nil
package main
import (
"fmt"
"reflect"
)
type People interface {
Show()
}
type Student struct{}
func (stu *Student) Show() {}
func live() People {
var stu *Student
return stu
}
func main() {
i := live()
fmt.Println(reflect.TypeOf(i))
fmt.Println(i)
if i == nil {
fmt.Println("我是為空")
} else {
fmt.Println("我不為空")
}
}
輸出結(jié)果為:
可以看到interface 變量i,雖然值為nil,但類型是Student文章來源:http://www.zghlxwxcb.cn/news/detail-621260.html
如果想判斷變量value是否為空,可以指定type文章來源地址http://www.zghlxwxcb.cn/news/detail-621260.html
func main() {
i := live()
fmt.Println(reflect.TypeOf(i))
fmt.Println(i)
if i == (*Student)(nil) {
fmt.Println("我是為空")
} else {
fmt.Println("我不為空")
}
}
到了這里,關(guān)于golang interface類型的nil的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!