【发布时间】:2019-12-24 12:49:36
【问题描述】:
我有一个类型A,它基本上是一个简单的地图:
type A map[int32]struct{}
现在,我希望有一个这种类型的特殊值,以便能够以不同的方式对待它。我认为在这个提议中使用nil 会很聪明(另外,这样,A 类型的所有非初始化变量都会有这个值,这也是我想要的):
const s A = nil
但我得到了
const 初始值设定项不能为 nil
当然,我可以接受这一点,并以几十种不同的方式重构我的程序。但我仍然想知道为什么无法将const 初始化为nil?一定有架构上的原因,但我看不出。
(请注意,我更喜欢“重命名”nil 而不是直接使用它,因为 nil 这个名称在我的情况下不是很直观。)
【问题讨论】:
-
即使 const 初始值设定项可以为 nil,您的 A 也不能为 const。 Go 中的 const 工作方式不同。阅读blog.golang.org/constants 和语言规范。
-
好的,谢谢@Volker,现在说得通了。我们不能拥有“类似指针”的东西的 const 。唯一让我感到困惑的是错误消息。基本上,我不能有一个 const 的指针,只是因为没有办法初始化它。
标签: go