我在试用围棋模块.我的项目需要图书馆golang.org/x/net/html
,所以我定义了这个go.mod
文件:
module github.com/patrickbucher/prettyprint
require golang.org/x/net/html
并编写了这个演示程序来判断编译时是否加载了依赖项:
package main
import (
"fmt"
"log"
"os"
"golang.org/x/net/html"
)
func main() {
doc, err := html.Parse(os.Stdin)
if err != nil {
log.Fatal(err)
}
fmt.Println(doc)
}
当我运行Go Build时,收到以下错误消息:
go: errors parsing go.mod:
~/prettyprint/go.mod:3: usage: require module/path v1.2.3
显然,我错过了版本号.但是要坐哪一辆呢?我偶然发现了一篇名为Takig Go Modules for a Spin的文章,其中有一个go.mod
文件的示例,其中包含对golang.org/x
个包的引用:
module github.com/davecheney/httpstat
require (
github.com/fatih/color v1.5.0
github.com/mattn/go-colorable v0.0.9
github.com/mattn/go-isatty v0.0.3
golang.org/x/net v0.0.0-20170922011244-0744d001aa84
golang.org/x/sys v0.0.0-20170922123423-429f518978ab
golang.org/x/text v0.0.0-20170915090833-1cbadb444a80
)
作者使用的是像v0.0.0-20170922011244-0744d001aa84
这样的版本字符串,它由Semver指示v0.0.0、时间戳和类似于GIT提交ID的内容组成.
我如何计算这些版本字符串?我猜这golang.org/x
个包在某个时候会根据语义版本控制进行版本控制,但要真正try go mod
个包,我需要弄清楚这now个包.