Невозможно найти функцию в другом каталоге, но в одном каталоге - PullRequest
0 голосов
/ 19 марта 2020

У меня только один пакет main, но я создаю несколько двоичных файлов:

--cmd
   --program1 
     --main.go
   --program2
     --main.go
--xxx.go
--yyy.go
--zzz.go

Я хочу вызвать функцию в xxx.go в program1/main.go. Компилятор говорит undeclared name:.

Не думаю, что мне следует импортировать функцию, потому что все они находятся в одном пакете main.

1 Ответ

0 голосов
/ 19 марта 2020

Чтобы сделать то, что вы хотите, вам нужно поместить файлы xxx. go, yyy. go и zzz. go во внутренний пакет.

Это макет каталога, который вам следует иметь:

--cmd
   --program1 
     --main.go
   --program2
     --main.go
--internal
   --shared
      --xxx.go
      --yyy.go
      --zzz.go

В файлах xxx. go, yyy. go и zzz. go в начале файла должно быть package shared.

В файлах main. go, у вас должно быть import "../../internal/shared". Если у вас есть файл go .mod с полностью определенным именем модуля (например, github.com/me/project), вы можете получить import "github.com/me/project/internal/shared".

Как только вы это сделаете, вы можете вызвать экспортированные функции общего пакета, таким образом, из файла xxx. go, из основного файла программы. Обратите внимание, что функция экспортируется, когда первая буква имени функции является заглавной буквой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...