Постоянная структура в 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 литерал не является константой
Ответы
Ответ 1
Поскольку Go не поддерживает структурные константы (выделение мое)
Булевские константы, константы руны, целочисленные константы, константы с плавающей запятой, сложные константы и строковые константы. Руны, целочисленные, с плавающей точкой и сложные константы называются числовыми константами.
Подробнее здесь: https://golang.org/ref/spec#Constants
Ответ 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
Вы должны объявить это как var.
Go позволяет вам объявлять и инициализировать глобальные переменные в области видимости модуля.
Go не имеет никакого понятия о неизменности. "const" не предназначен для предотвращения изменения переменных или чего-либо подобного.