
使用 go get github.com/myproject/demo/... 可递归获取并安装仓库中所有子目录下的可执行程序(含 main 包)及可导入库,无需分别执行多次 go get。
在 Go 模块时代(Go 1.11+),go get 默认以模块为单位进行依赖管理。当你的项目结构如下时:
github.com/myproject/demo/ ├── config/ # 可导入库(package config) ├── crypto/ # 可导入库(package crypto) ├── demo/ # 可执行目录(package main) │ └── executable.go ├── demo.go # 主库入口(package demo) ├── deps.go ├── LICENSE └── README.md
若仅运行 go get github.com/myproject/demo,Go 默认只处理根目录(即 demo.go 所在路径)的包——由于该目录是 package demo(非 main),它只会被下载并缓存为依赖库,不会构建或安装二进制文件。
✅ 正确做法:使用通配符 ...
go get github.com/myproject/demo/...
该命令会递归遍历 demo/ 下所有子目录,对每个包含 package main 且含 func main() 的目录(如 demo/ 子目录),自动构建并安装对应可执行文件到 $GOPATH/bin/(或 go env GOPATH 指定路径下的 bin/ 目录)。同时,所有其他合法 Go 包(如 config/、crypto/)也会被下载并纳入模块缓存,供后续导入使用。
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
⚠️ 注意事项:
- 确保 demo/ 目录下确实存在 package main 和 func main(),否则不会生成可执行文件;
- 若使用 Go 1.16+ 且启用了 GO111MODULE=on(默认),推荐配合 go install 替代 go get 安装二进制(go install github.com/myproject/demo/demo@latest),因 go get 自 Go 1.18 起已弃用安装功能,仅用于添加/更新依赖;
- 使用 ... 时需注意权限与网络开销——它会扫描所有子目录,包括 .git、testdata 或隐藏目录(若含合法 Go 文件);建议保持项目结构清晰,避免无关 Go 文件干扰。
? 总结:/... 是实现“一键安装全部可执行体 + 库”的标准实践,但现代 Go 工程更推荐显式指定路径(如 go install ./demo)或使用 go install + 版本标签,以提升可重现性与安全性。









