我正在尝试 Go 模块。我的项目需要库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
包将在某个时候根据语义版本控制进行版本控制,但要真正尝试,我现在go mod
需要弄清楚那些。