0

0

如何通过单条 go get 命令同时安装 Go 项目中的库与可执行文件

心靈之曲

心靈之曲

发布时间:2026-01-05 11:33:02

|

954人浏览过

|

来源于php中文网

原创

如何通过单条 go get 命令同时安装 Go 项目中的库与可执行文件

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/...

该命令将:

Zapier Agents
Zapier Agents

Zapier推出的Agents智能体,集成7000+应用程序

下载
  • 遍历 demo/ 下所有子目录(包括 demo/ 自身、config/、crypto/、以及未来新增的 cmd/xxx/ 等);
  • 对每个含 package main 的目录,自动执行 go install,生成对应二进制(如 demo)并放入 $GOBIN(默认为 $GOPATH/bin 或 go env GOPATH 下的 bin 目录);
  • 同时下载并缓存所有库包(如 config、crypto),供本地或他人项目 import 使用。

⚠️ 注意事项:

  • ... 不匹配隐藏目录(以 . 开头,如 .github/)或 vendor/(若启用 module 模式则通常忽略);
  • Go 1.16+ 默认启用 GO111MODULE=on,确保你在模块根目录(含 go.mod)下操作;若尚未初始化模块,请先运行 go mod init github.com/myproject/demo;
  • 若 demo/ 目录下存在多个 main 包(例如 demo/cmd/api/ 和 demo/cmd/cli/),... 会一并安装全部二进制,命名依据其目录名(如 api、cli);
  • go get 在 Go 1.17+ 中已主要作为依赖管理命令,安装二进制推荐显式使用 go install(如 go install github.com/myproject/demo/demo@latest),但 go get repo/... 仍向后兼容并有效。

? 最佳实践建议:将所有可执行文件统一置于 cmd/ 子目录下(如 cmd/demo/),既符合 Go 社区惯例,也便于权限隔离与版本控制。此时只需 go get github.com/myproject/demo/cmd/... 即可精准安装全部工具,避免误装非命令类 main 包。

总结:用 ... 是标准、简洁且可靠的方式,一条命令完成库与二进制的同步获取与安装,无需额外脚本或构建逻辑。

相关专题

更多
PPT动态图表制作教程大全
PPT动态图表制作教程大全

本专题整合了PPT动态图表制作相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.07

c++ Libcurl用法详解
c++ Libcurl用法详解

本专题整合了c++ Libcurl用法详解,阅读专题下面的文章了解更多详细内容。

0

2026.01.07

c++ Libcurl用法大全
c++ Libcurl用法大全

本专题整合了c++ Libcurl用法详解,阅读专题下面的文章了解更多详细内容。

0

2026.01.07

C++ vector用法汇总
C++ vector用法汇总

本专题整合了C++中vector的用法大全,阅读专题下面的文章了解更多详细内容。

2

2026.01.07

C++ vector用法大全
C++ vector用法大全

本专题整合了C++中vector的用法大全,阅读专题下面的文章了解更多详细内容。

0

2026.01.07

2026年漫蛙最新官网地址
2026年漫蛙最新官网地址

漫蛙官网访问入口为https://manwa.me,另提供manwa.cc、manwa.vip、manwa.site等多节点备用链接,支持跨设备同步、个性化阅读及HTTPS安全加密。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

60

2026.01.07

php做exe需要在什么样的环境
php做exe需要在什么样的环境

PHP无法真正编译为EXE,所谓打包实为将解释器、脚本及依赖库封装成自解压容器;主流方案是ExeOutputforPHP(商业、Windows)和PHPDesktop(开源、跨平台),需手动处理扩展依赖、路径适配与运行时限制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2026.01.07

抖音抖币官方充值渠道汇总
抖音抖币官方充值渠道汇总

抖音官方抖币充值官网入口为https://pay.douyin.com/,具备直连支付系统、全端统一鉴权、HTTPS加密传输、多设备实时同步等特性,支持微信/支付宝/银联/话费等多种支付方式及严密账户安全机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5

2026.01.07

vscode创建html的教程
vscode创建html的教程

在 Visual Studio Code 中创建 HTML 文件的步骤如下:打开 VSCode并创建新文件。选择 "HTML" 模板。输入 HTML 代码。保存文件。(可选)预览文件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3

2026.01.07

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.5万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号