Go 包管理入门简介

Go 包管理入门简介

一、包
  1. 包的定义:
    • 在golang中,包是多个go源文件的集合,一个package下可以有多个go文件,归属于同一package,完成一个或者一类功能。
  2. 包的种类:
    • 系统内置包:go语言自带包,如str.conv、fmt等

    • 自定义包:开发者自己写的包

    • 第三方包:属于自定义包的一种,需下载到本地才能使用, 如可以从GitHub上下载的第三方包。

  3. 命名规范
    • 一个包里可以定义方法或变量,如果方法名或变量名大写,则此方法或变量可以被其他包引用并使用,表示公有,小写为私有。
二、包管理工具go mod
  1. 前言(从gopath到go mod)

    1. 在go的1.11版本之前如果想自定义包需要把项目放在GOPATH目录下。
    2. 在1.11版本后使用go mod管理项目,需要把项目放在GOPATH下,也无需手动配置环境。
    3. go的1.13版本之后就彻底不需要GOPATH了。
  2. 开启go mod

    go env -w GO111MODULE=on
    
  3. 基本使用

    命令说明
    init初始化go mod,命令:go mod init xxx(package name)
    downloaddownload modules to local cache(全局下载依赖包)
    editedit go.mod from tools or scripts(编辑go.mod)
    graphprint module requirement graph (打印模块依赖图)
    verifyinitialize new module in current directory(在当前目录初始化mod)
    tidyadd missing and remove unused modules(拉取缺少的模块,移除不用的模块)
    vendormake vendored copy of dependencies(将依赖复制到vendor下)
    verifyverify dependencies have expected content (验证依赖是否正确)
    whyexplain why packages or modules are needed(解释为什么需要依赖)

    具体使用案例

    # 1, Go mod 初始化
    go mod init 模块名
    
    # 2, Go mod 下载到本地Cache
    go mod download
    # 2, Go mod 清理本地Cache
    go clean -modcache
    
    # 3, Go mod 编辑go.mod文件:更多go mod查看 `go help mod edit`
    go mod edit
    
    # 4, Go mod 打印依赖图
    go mod graph
    
    # 5, Go mod 删除错误或者不使用的modules
    go mod tidy
    
    # 6, Go mod 生成vendor目录
    go mod vendor
    
    # 7, Go mod 验证依赖是否正确
    go mod verify
    
    # 8, Go mod 查找依赖
    go mod why
    
    # 9, GO mod 更新依赖到最新版本
    go get -u github.com/golang/protobuf
    
    # 10, Go mod 更新到指定版本
    go get -u github.com/golang/protobuf@指定版本
    # 10, Go mod 查看有哪些版本
    go list -m -versions github.com/golang/protobuf
    
    # 11, Go mod 替换包源
    go mod edit -replace=golang.org/x/crypto@v0.0.0=github.com/golang/crypto@latest
    go mod edit -replace=golang.org/x/sys@v0.0.0=github.com/golang/sys@latest
    
    # 12, Go打包给其他包调用
    git tag -a v0.0.1 -m "Golang打包给其他包调用" && git push origin v0.0.1
    go get -u xxxxxx
    
    本段参考:https://blog.csdn.net/m0_37698164/article/details/127548294
    
  4. go vendor本地缓存

    • 目的:启动时如果对应开源包被删除或者不可用,可以使用本地vendor缓存的包
    • 命令:
      • go mod vendor : 将依赖复制到当前项目的vendor下缓存,便于离线时使用
    • 注意:
      • 如果离线,即不适用go mod,使用go vendor,需要将项目放在GOPATH/src路径下面,否则包查找会失败,识别不到vendor下面的包。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉言心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值