【问题标题】:Constant struct in GoGo中的常量结构
【发布时间】:2017-09-08 04:18:08
【问题描述】:

为什么我不能创建常量结构?

const FEED_TO_INSERT = quzx.RssFeed{ 0,
                    "",
                    "desc",
                    "www.some-site.com",
                    "upd_url",
                    "img_title",
                    "img_url",
                    0,
                    0,
                    0,
                    0,
                    0,
                    100,
                    "alt_name",
                    1,
                    1,
                    1,
                    "test",
                    100,
                    100,
                    0 }

.\rss_test.go:32: const 初始值设定项 quzx.RssFeed 文字不是常量

【问题讨论】:

  • 您可以将链接添加到已回答的问题吗?最好链接回原始问题以进行复制。
  • 标记重新打开。询问是否可以创建常量结构与询问数组不同,即使 答案 相似。

标签: go


【解决方案1】:

您应该将其声明为 var。

Go 允许您在模块范围内声明和初始化全局变量。

Go 没有任何不变性的概念。 'const' 并不是为了防止变量发生变异或类似的事情。

【讨论】:

  • 这是真的(Go 中的 const 更接近 C 中的 #define 而不是 C# 中的 readonly),但并没有真正解释为什么不能有类似结构的 @ 987654324@ 值。它们可能被排除在外(以及类似数组和类似映射的值)以简化编译器设计。
【解决方案2】:

一个好的解决方法是将它包装在一个函数中。

func FEED_TO_INSERT() quzx.RssFeed {
    return quzx.RssFeed{ 0,
                    "",
                    "desc",
                    "www.some-site.com",
                    "upd_url",
                    "img_title",
                    "img_url",
                    0,
                    0,
                    0,
                    0,
                    0,
                    100,
                    "alt_name",
                    1,
                    1,
                    1,
                    "test",
                    100,
                    100,
                    0 }
}

注意:确保函数始终返回一个新对象(或副本)。

【讨论】:

    【解决方案3】:

    因为 Go 不支持结构常量(强调我的)

    有布尔常量、符文常量、整数常量, 浮点常量、复数常量和字符串常量。 符文、整数、浮点数和复数常量统称为 称为数字常量。

    在此处阅读更多信息:https://golang.org/ref/spec#Constants

    【讨论】:

    • 伤心。这是一个方便的语言功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2017-07-27
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多