Подтвердить что ты не робот

Постоянная структура в 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 литерал не является константой

4b9b3361

Ответ 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" не предназначен для предотвращения изменения переменных или чего-либо подобного.