golang 如何打个包供自己下载使用

作者: adm 分类: go 发布时间: 2025-03-03

在 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

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!