Loading [a11y]/accessibility-menu.js
Go Programming Languages - Go Module Version

Go Programming Languages - Go Module Version

Go Module 版本规范

  1. Go module 每个版本以v开头,后面跟_语义版本_。当vcs为git时候,通常情况下模块的版本会是git tag的版本

go module的版本号

go module的版本号

git tag版本

git tag版本

  1. 当没有语义版本的时候,会生成一个伪版本,例如v0.0.0-20190306012644-bacd9c7ef1dd这种,其中第二部分代表代码生成的时间,第三部分是这个代码当前commit的id的前12个字符。(可以通过git log来查看)

  2. 主版本为2或更高版本的时候,go模块路径必须带有类似于/v2/v3这样的主版本后缀,比如github.com/gocolly/colly/v2github.com/mailru/go-clickhouse/v2,这就是为什么go getgo install的时候可以指定版本号,如:

1
go get github.com/cespare/xxhash@v1.1.0
  1. 主版本号不同表示不兼容,一个项目里可能同时依赖不同的主版本号,比如
1
2
3
4
import (
"gopkg.in/yaml.v2"
yaml3 "gopkg.in/yaml.v3"
)
  1. go get -u不会更新主版本号,即-u表示更新到当前主版本号下的最新版本

  2. 在使用go module规范之前,有些第三方库的高版本没有加/v2/v3后缀,此时需要加incompatible,如github/go-redis/redis v6.15.9+incompatible路径没有/v6后缀

  3. 主版本后缀不允许有/v0/v1出现

    1. 一种特殊情况:以gopkg.in/开头的模块路径必须始终具有主版本后缀。后缀必须以点开头,而不是斜杠,例如gopkg.in/check.v1gopkg.in/yaml.v3

Go Programming Languages - Go Module Version

https://jerry20000730.github.io/wiki/程序语言/Go/Go_module/

Author

Tragic Master

Posted on

2025-03-11

Updated on

2025-03-12

Licensed under