Если мне нужен импорт в двух или более файлах для одного пакета в Go, каков идиоматический способ?Импорт для пакета Go разбит на файлы
До сегодняшнего дня я делаю это так:
file1.go
package A
import "os"
file2.go
package A
import "os"
Если мне нужен импорт в двух или более файлах для одного пакета в Go, каков идиоматический способ?Импорт для пакета Go разбит на файлы
До сегодняшнего дня я делаю это так:
file1.go
package A
import "os"
file2.go
package A
import "os"
Это не вопрос того, чтобы быть идиоматических, это вопрос прицелов.
Import declarations относится к содержанию file. Spec: Import declarations:
Декларация импорт заявляет, что исходного файл, содержащий декларацию зависит от функциональности импортируемого пакета (§Program initialization and execution) и позволяет получить доступ к экспортируемым идентификаторам этого пакета.
Также Spec: Declarations and scope:
Перейти в лексической области видимости с помощью blocks:
...
3. Сферы имени пакета импортируемого пакета является блоком файла файла, содержащим декларация импорта.
...
Что это означает, что если есть пакет, который необходим в нескольких файлах (образуя единый пакет или несколько, это не имеет значения), вы должны импортировать его отдельно во всех эти файлы.
Что вы должны сделать, это просмотреть и пересмотреть, как вы разделяете код между файлами, поскольку это может быть хороший способ группировать функции и объявления в один и тот же файл, который имеет те же зависимости (которые зависят от одного и того же набора пакетов) , и вам нужно будет только один раз импортировать эти пакеты.
Также отметим, что если некоторые файлы пакета mypkg
зависят от множества других пакетов, но не другие файлы mypkg
, он также может быть выгодно разделить mypkg
на 2 отдельных пакетов на основе зависимостей. Большинство из этих решений являются субъективными, хотя, вы говорите, имеют ли они смысл в вашем случае или нет.
Отличный ответ, спасибо! – Steffen