go - 递归编译文件

标签 go

我刚开始使用 Go,我喜欢它!我试图使我的项目结构更易于管理,而不是将所有内容都放在我的 main.go 中

所以现在我有了这样的结构。

src/
-> main.go
-> routes.go
-> handlers/
--> user_handlers.go

但是当我尝试使用以下命令构建它时

go build -v -o ./bin/my_bin ./src/...

我收到这个错误

cannot use -o with multiple packages

但是如果我把它做成这样的平面结构

src/
-> main.go
-> routes.go
-> user_handlers.go

它工作得很好,我所有的文件的顶部都有“package main”。

我做错了什么?

最佳答案

包名必须与目录名匹配。将源文件移动到新目录还需要更改包名称。

foo/foo.go // package foo
foo/bar/bar.go // package bar
foo/bar/qux.go // package bar

PATH 与包名称无关。

Package foo: /some/path/some/where/foo 

这允许创建和导入多个“foo”包,前提是您的导入指定了“foo”的所需位置

附言包名称的约定是小写,没有标点符号(例如,没有 _'s)

关于go - 递归编译文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095423/

相关文章:

go - 在 golang 中解析/验证来自 AzureAD 的 JWT token

dictionary - 用new()初始化map,然后给panic异常赋值,为什么?

go - 使用没有协议(protocol)定义的托管编写器

go - 如何使 "go get"获得传递依赖?

go - 有没有办法在 Go 中组合可能失败的操作?

docker - 如何在 Docker 中安装私有(private)依赖项

go - Golang 中的解析时间

sockets - 如何检查从 tcp 套接字读取是否会阻塞?

html - 在 Golang 的 HTML 模板中使用 Vue.js

go - beego 找不到带有 bee run 的布局 tpl 文件