golang中interface变量,底层两个对象来存,一个是type、一个是value,只有type、value都为nil时,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("我不为空")
}
}
输出结果为:
可以看到interface 变量i,虽然值为nil,但类型是Student文章来源:https://www.toymoban.com/news/detail-621260.html
如果想判断变量value是否为空,可以指定type文章来源地址https://www.toymoban.com/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("我不为空")
}
}
到了这里,关于golang interface类型的nil的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!