请教一个 go 的语法问题

2017-08-22 15:55:01 +08:00
 drzhaug

代码

type People interface {
	Show()
}

type Student struct {
}

func (stu *Student) Show() {

}

func live() People {
	var stu *Student
	return stu
}

func main() {
	if live() == nil {
		fmt.Println("A")
	} else {
		fmt.Println("B")
	}
}

我查了好久也没找到 为什么 live()返回值强制转换为 interface 类型后 live 返回值依然为 nil,但是 live() == nil 为 false ! 请大神指点一下。

2006 次点击
所在节点    程序员
5 条回复
koebehshian
2017-08-22 16:13:22 +08:00
xrlin
2017-08-22 16:15:24 +08:00
Interface 转换后有类型 值两部分
Muninn
2017-08-22 16:18:53 +08:00
反正尽量少写 == nil。。。
一楼说的很清楚了
我不明 error 都只敢!=
jarlyyn
2017-08-22 16:21:51 +08:00
nil 和 interface(nil)是两个东西……
drzhaug
2017-08-22 16:28:25 +08:00
多谢各位啦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/384872

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX