golang 如何打个包供自己下载使用
在 Go 语言中,如果你想打包一个项目或模块(module)供自己下载和使用,其实并不需要像 Java 的 JAR 或 Python 的 wheel 那样生成一个“二进制包”。Go 的依赖管理是基于 Git 仓库 + 模块(module) 的机制。
但你可以通过以下方式实现“打包 → 上传 → 自己下载使用”的流程,适用于私有库或内部项目。
✅ 目标
你想做到:
写一个 Go 包(比如工具库、SDK、组件)
打个“包”存起来(比如本地私有 Git 服务器、GitHub 私有库、Gitee、GitLab)
在别的项目中用 go get 或 go mod 下载并使用它
🛠️ 步骤一:创建你的 Go 模块(即“包”)
1. 初始化模块
Bash
# 创建项目目录 mkdir myutils cd myutils # 初始化 Go 模块 go mod init github.com/yourname/myutils
✅ 建议用 github.com/用户名/项目名 格式,即使私有也推荐这样写,便于后期集成。
2. 写代码(比如一个简单的工具函数)
文件:stringutil.go
Go
package myutils import "strings" // Reverse 字符串反转 func Reverse(s string) string { runes := []rune(s) for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { runes[i], runes[j] = runes[j], runes[i] } return string(runes) } // ToUpperAndTrim 去空格并转大写 func ToUpperAndTrim(s string) string { return strings.ToUpper(strings.TrimSpace(s)) }
3. 生成 go.mod 文件(已自动生成)
Bash
go mod tidy
☁️ 步骤二:上传到 Git 仓库(相当于“打个包上传”)
方式 1:上传到 GitHub(推荐,支持私有)
登录 GitHub
创建新仓库:myutils(可以设为私有)
推送代码:
Bash
git init git add . git commit -m "first commit" git remote add origin https://github.com/yourname/myutils.git git push -u origin main
方式 2:用公司内网 GitLab / Gitee / 自建 Git 服务器
流程一样,只是远程地址不同:
Bash
git remote add origin http://git.company.com/yourname/myutils.git git push -u origin main
📦 步骤三:在其他项目中“下载使用”这个包
1. 创建新项目
Bash
mkdir myapp cd myapp go mod init myapp
2. 引入你刚才的包
Bash
go get github.com/yourname/myutils
如果是私有仓库,可能需要配置 SSH 或 token(见下文“私有仓库注意事项”)
3. 写代码使用它
main.go
Go
package main import ( "fmt" "github.com/yourname/myutils" ) func main() { s := " hello world " fmt.Println(myutils.ToUpperAndTrim(s)) // 输出: HELLO WORLD fmt.Println(myutils.Reverse("abc")) // 输出: cba }
4. 运行
Bash
go run main.go
🔐 私有仓库注意事项(关键!)
如果你的包是私有的(如 GitHub 私有库),go get 默认无法访问,你需要配置:
方法 1:使用 SSH(推荐)
确保你配置了 SSH 密钥:
Bash
# 使用 SSH 地址 go get git@github.com:yourname/myutils.git
提前运行 ssh -T git@github.com 测试是否能连通。
方法 2:使用 Personal Access Token(PAT)
Bash
# 配置 Git 凭证 git config --global credential.helper store # 第一次拉取时输入用户名 + token(不是密码)
方法 3:在 go env 中设置代理或替换(可选)
Bash
# 例如替换为内网镜像或私有代理 go env -w GOPRIVATE=github.com/yourname/*
这告诉 Go:这个域名下的包是私有的,不要走公共代理。
🧩 高级技巧:打“本地包”或离线使用
如果你想完全脱离网络,也可以:
方法:使用 replace 指向本地路径
在项目中:
Bash
go mod edit -replace github.com/yourname/myutils=/path/to/myutils
然后:
Bash
go mod tidy
这样就不从网络下载,而是直接用你本地的代码。
适合开发调试,但不要提交到 Git。
📁 最终结构示例
myutils/ ├── go.mod # module github.com/yourname/myutils ├── stringutil.go # func Reverse, ToUpperAndTrim └── go.sum (可选)
上传到 GitHub 后,别人或你自己就可以:
Bash
go get github.com/yourname/myutils
✅ 总结:Go 的“打包”就是“推送到 Git”
你想做的事 对应操作
写个包 go mod init 名字 + 写代码
打个包 git push 到远程仓库(GitHub/GitLab)
下载使用 go get 仓库地址
私有包 配置 SSH 或 Token
本地测试 go mod edit -replace 指向本地目录
💡 小贴士
包名(package name)不一定要和模块名一样,但建议保持一致。
函数首字母大写才能被外部调用(Go 的导出规则)。
可以打 tag(版本号):git tag v1.0.0 && git push --tags