LINUX.ORG.RU
Ответ на: комментарий от Siado

В каждом подключаемом файле нужно импортировать один и тот же файл с объявлением констант?

Мне это приходило в голову, но не хотелось верить.

lochness
() автор топика
Ответ на: комментарий от lochness

Мне это приходило в голову, но не хотелось верить.

Обожди. А как ты себе это вообще представлял? У тебя есть файл с переменной - логично, что другие подключаемые модули должны как-то извлекать эту переменную. И самый правильный способ - это явно указать.

Как бы даже «конфиг-файлы» по такому же принципу устроены =)

Siado ★★★★★
()
Ответ на: комментарий от Siado

Когда некоторым маркетологи рассказывают про «лучше чем в Си», то многие из этих некоторых думают, что оно вообще всё само будет делать. Ну кроме как мороженое жрать:)

MimisGotAPlan
()
Ответ на: комментарий от Siado

Обожди. А как ты себе это вообще представлял?

Я хотел общее пространство имён на весь проект.

В дочернем пакете parser пусть будут специфичные для него функции и данные, это ок. Но хотел чтобы объявленные в родительском пакете (main) данные были видны во всех подключённых пакетах.

Наверное, в Go нет связи родитель-ребёнок как в некоторых динамических языках?

lochness
() автор топика
Ответ на: комментарий от Siado

Пакеты в Go - немного необычная для меня парадигма :)

lochness
() автор топика
Ответ на: комментарий от lochness

В таком случае твой комментарий ничего не стоит.

вот и используй импорт, умник, йопта

anonymous
()
Ответ на: комментарий от lochness

В дочернем пакете

В Go нет «дочерних» пакетов. Есть просто пакеты и они никак, кроме как через import, между собой не связаны.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

Я не знаю в каком ЯП вообще есть общее пространство имен.

В Go только через импорт.

deterok ★★★★★
()

Как?

Никак. Сделай пакет Constant и там определяй.

no-such-file ★★★★★
()

Где-то я видел что можно объявить переменную в одном файле проекта, а работать с ней в другом, но там импорты были по сути чуть ли не копированием импортируемого файла. ЕМНИП что-то подобное PHP если не он сам. Но это конечно адовый маразм, одному то такой проект сложно поддерживать.

Dred ★★★★★
()
Ответ на: комментарий от beastie

В Go нет «дочерних» пакетов. Есть просто пакеты и они никак, кроме как через import, между собой не связаны.

Спасибо.

lochness
() автор топика

Я с go поверхностно знаком, но разве нельзя написать некую глобальную структуру с полями a,b,c и реализующую интерфейс get_a(), get_b(), get_c(), а все твои структуры, заинтересовынные в глобальных переменных, породить от этой корневой?

Yur4eg ★★
()
Ответ на: комментарий от Yur4eg

Я с go поверхностно знаком, но разве нельзя написать некую глобальную структуру с полями a,b,c и реализующую интерфейс get_a(), get_b(), get_c()

package

а все твои структуры, заинтересовынные в глобальных переменных, породить от этой корневой?

import

korvin_ ★★★★★
()
Ответ на: комментарий от Yur4eg

Я с go поверхностно знаком, но разве нельзя написать некую глобальную структуру с полями a,b,c и реализующую интерфейс get_a(), get_b(), get_c(), а все твои структуры, заинтересовынные в глобальных переменных, породить от этой корневой?

Повторюсь, мне это приходило в голову, но показалось несколько топорным. Вот решил узнать какие ещё есть способы :)

lochness
() автор топика

если кратко...

1) за глобальные переменные нужно гнать из профессии. авторы golang все правильно сделали

2) google://golang+singleton+threadsafe

Deleted
()
Ответ на: комментарий от Deleted

Вот кстати правильное решение. А при инициализации этот синглетон будет подгружать глобальные переменные из текстового конфигурационного файла.

Yur4eg ★★
()
Ответ на: комментарий от Yur4eg

Можно. И даже если в рамках одного пакета то import ненужен.

andreykyz ★★
()
Ответ на: комментарий от MimisGotAPlan

Плохая у тебя «суть», если она у тебя «такая же». Главная суть синглтона - интерфейс работы с данными. Это вопрос проектирования структуры ПО таким образом, чтоб потом можно было заменять такие блоки без деградации функциональности.

За глобальные переменные нужно пальцы в дверях щимить, если уж сильно жалко неучей.

Deleted
()
Ответ на: комментарий от Deleted

суть синглтона - интерфейс работы с данными.

И что бы эта фраза значила? А класс это не интерфейс работы с данными? Если да, то должен же чем-то синглтон отличаться раз уж у него другое название?:)

MimisGotAPlan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.