golang 关于 nil 的问题

2020-11-19 11:25:34 +08:00
 Chaox

nil 的底层实现在源码中为:

// nil is a predeclared identifier representing the zero value for a
// pointer, channel, func, interface, map, or slice type.
var nil Type // Type must be a pointer, channel, func, interface, map, or slice type

// Type is here for the purposes of documentation only. It is a stand-in
// for any Go type, but represents the same type for any given function
// invocation.
type Type int

在源码中好像是 int 类型? 我的疑惑是 nil 在实际使用中是有类型区分的,可以把 nil 转换为不同类型的 nil 。那 nil 是接口类型还是 int 类型? 如果接口类型他的 data,type 是什么内容呢?如果是 int 类型底层实现又是如何呢?

1275 次点击
所在节点    问与答
2 条回复
darksword21
2020-11-19 11:39:04 +08:00
好问题,楼下回答
elechi
2020-11-19 13:30:00 +08:00
理解成空指针就行
// Type must be a pointer, channel, func, interface, map, or slice type
对应的,上面这些其实都是指针类型

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

https://ex.noerr.eu.org/t/727036

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

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

© 2021 V2EX