Я новичок в использовании модулей и беру их на пробу в новом проекте, который я пытаюсь смоделировать по описанной структуре здесь
Вот пример моей структуры каталогов:
.
├── cmd
│ └── app_name
│ └── main.go
├── go.mod
├── go.sum
├── internal
│ └── bot
│ └── bot.go
└── pkg
├── website_name
│ ├── client.go
│ ├── client.options.go
│ ├── server.go
│ └── server.options.go
└── lib
└── lib.go
- Это идиоматически правильно? Я знаю, что существует не так много консенсуса, но я хотел бы следовать лучшим практикам.
- Когда я запускаю
go build
, я получаю «неожиданный путь к модулю« github.com/ragurney/app_name/cmd/app_name »», но когда я запускаюgo build ./...
, он работает. Почему?
Когда я перехожу main.go
на верхний уровень, все работает, как ожидалось. Не следует ли мне просто не использовать шаблон /cmd
с модулями?
module
в вашем go.mod? Похоже, это относится кcmd/app_name
, что было бы неверно - он должен указывать на каталог, в котором он расположен. - person Adrian   schedule 02.11.2018cmd/app_name
:module github.com/ragurney/app_name/cmd/app_name
. Вместо этого должно быть:github.com/ragurney/app_name
? Это вызывает аналогичную ошибку: не удается найти модуль, предоставляющий пакет github.com/ragurney/app_name - person ragurney   schedule 02.11.2018github.com/ragurney/app_name
, если это корень (где находится файл go.mod). У вас случайно есть несколькоgo.mod
файлов в репо? - person Adrian   schedule 02.11.2018