我在试用围棋模块.我的项目需要图书馆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个包.

推荐答案

表单v0.0.0-20180906233go mod-161cd47e91fd的版本意味着在GIT储存库上没有标记的版本.因此go mod基于最新提交时间和提交散列的前缀来生成一个.

要获得正确的go.mod文件,请使用以下命令开始(假设为GO 1.11):

go mod init yourmodulename

或者创建一个只包含以下内容的空go.mod文件:

module yourmodulename

然后运行go mod tidy,这将找到所有依赖项,添加缺失的依赖项并删除未使用的依赖项.

Go相关问答推荐

如何修复在Go API中使用Gin Framework的请求资源上没有使用Gin Framework的请求源的消息?''

GetSecretValue,get identity:get credentials:无法刷新缓存的凭据

GORM Find方法中缺少字段

在不耗尽资源的情况下处理S3文件下载

如何使用GO GIN从Auth0 JWT内标识检索权限

如何使用 Go 连接到非默认 firestore 数据库?

如何在正则表达式中使整个单词可选?

转到 bufio.Writer、gzip.Writer 并上传到内存中的 AWS S3

用接口来模拟amqp091go的困难

将文本文件放入切片然后进行比较

如何使用 go 包设置标头键和值:shurcooL/graphql 或 hasura/go-graphql-client?

如何将 npm 安装进度条通过管道传输到终端?

Golang 构建多平台问题

如何使用struct的方法清除除某些字段之外的struct值

github.com/rs/zerolog 字段的延迟判断

Go 并发、goroutine 同步和关闭通道

panic :拨号 tcp:在 172.22.64.1:53 上查找 bookstoreDB:没有这样的主机

关于GO的几个问题

有没有一种方法可以确保传递的值具有使用泛型的某些字段?

Golang 与 Cassandra db 使用 docker-compose:cannot connect (gocql)