【问题标题】:Why can a const initializer not be nil? [duplicate]为什么 const 初始值设定项不能为零? [复制]
【发布时间】:2019-12-24 12:49:36
【问题描述】:

我有一个类型A,它基本上是一个简单的地图:

type A map[int32]struct{}

现在,我希望有一个这种类型的特殊值,以便能够以不同的方式对待它。我认为在这个提议中使用nil 会很聪明(另外,这样,A 类型的所有非初始化变量都会有这个值,这也是我想要的):

const s A = nil

但我得到了

const 初始值设定项不能为 nil

当然,我可以接受这一点,并以几十种不同的方式重构我的程序。但我仍然想知道为什么无法将const 初始化为nil?一定有架构上的原因,但我看不出。

(请注意,我更喜欢“重命名”nil 而不是直接使用它,因为 nil 这个名称在我的情况下不是很直观。)

【问题讨论】:

标签: go


【解决方案1】:

我相信这是因为你只能有 booleanruneintegerfloating-pointcomplexstring 类型的常量。 文档:https://golang.org/ref/spec#Constants

nilpointerinterfacemapslicechannelfunction 类型的零值 文档:https://golang.org/ref/spec#The_zero_value

您可以在这里阅读更多内容https://blog.golang.org/constants

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多