Go中的常量结构

时间:2017-04-12 11:44:23

标签: go

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

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文字不是常量

3 个答案:

答案 0 :(得分:36)

因为Go不支持struct constants(强调我的)

  

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

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

答案 1 :(得分:1)

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

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 }
}

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

答案 2 :(得分:0)

您应该将其声明为变量。

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

Go没有任何不变性的概念。 “ const”并不是要防止变量突变或类似的事情。