

新闻资讯
技术学院在 go 中,可通过 `go get github.com/your/repo/...`(含三点省略号)一次性下载并安装仓库中所有子目录下的可执行程序(含 `main` 包)及依赖库,无需为每个二进制单独执行 `go get`。
Go 的模块构建与安装机制默认按“包”(package)粒度工作:只有包含 package main 且至少一个源文件定义了 func main() 的目录,才会被 go install(或 go get 在较新版本中等效行为)编译为可执行文件。而普通库包(如 config/、crypto/)则仅被下载和缓存,供其他项目导入使用。
回到你的项目结构:
github.com/myproject/demo/ ├── config/ ├── crypto/ ├── demo/ // ← 含 executable.go 和 package main ├── deps.go ├── LICENSE ├── README.md └── demo.go // ← 可能是库入口,package demo
当前你需运行 go get github.com/myproject/demo/demo 才能安装二进制,是因为 go get 默认只处理指定路径的单个包。但 Go 支持通配符式递归匹配——使用 ...(三点省略号)可匹配当前路径下所有子目录及其嵌套子目录中的合法 Go 包。
✅ 正确做法是:
go get github.com/myproject/demo/...
该命令将:
、crypto),供本地或他人项目 import 使用。⚠️ 注意事项:
? 最佳实践建议:将所有可执行文件统一置于 cmd/ 子目录下(如 cmd/demo/),既符合 Go 社区惯例,也便于权限隔离与版本控制。此时只需 go get github.com/myproject/demo/cmd/... 即可精准安装全部工具,避免误装非命令类 main 包。
总结:用 ... 是标准、简洁且可靠的方式,一条命令完成库与二进制的同步获取与安装,无需额外脚本或构建逻辑。