dongshan7060 2018-11-02 16:32
浏览 46
已采纳

使用/ cmd结构构建Go模块时出错

I'm new to go modules, and am taking them for a spin in a new project which I'm trying to model after the structure described here

Here is an example of my directory structure:

.
├── 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
  1. Is this idiomatically correct? I know there's not a whole lot of consensus out there, but I'd like to follow best practices.
  2. When I run go build I get 'unexpected module path "github.com/ragurney/app_name/cmd/app_name"', but when I run go build ./... it works. Why?

When I move main.go to the top level everything works as expected. Should I just not use the /cmd pattern with modules?

  • 写回答

2条回答 默认 最新

  • drv13270 2018-11-02 16:59
    关注

    To answer your first question, its completely opinionated and whatever you like best that is also easy to understand for others you should go with (I think it's fine).

    To answer your second question the reason go build ./... works as opposed to go build from the root directory is because ./... starts in the current directory (the root) and searches for all program entry-points and builds them. When you move main.go to the root directory, with this new information, go build working then makes sense, as its only looking in the current directory.

    You can explicitly say go build ./cmd/app_name which would also work.

    Your application structure works perfectly fine with modules, as I use something very similar to it (https://www.ardanlabs.com/blog/2017/02/package-oriented-design.html) and modules work very well for me.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器