我在我的项目中使用goczmq,如下所示:
main.go:
package main
import (
_ "github.com/zeromq/goczmq"
)
func main() {
}
Run Code Online (Sandbox Code Playgroud)
而且,我使用 golang 1.12 和 gomod 来管理我的项目。
看接下来,我使用go mod init xxx
,并且在构建时,它会自动为我下载 goczmq 并将依赖项添加到go.mod
,但其中有incompatible
。(但对于其他图书馆,我可能会得到类似的东西github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181
)
go.mod:
module pigeon
go 1.12
require (
github.com/zeromq/goczmq v4.1.0+incompatible
)
Run Code Online (Sandbox Code Playgroud)
从一些讨论(对于其他图书馆),例如this,图书馆所有者似乎应该做些什么来支持 golang 1.12?但在我的情况下,一切正常,只是incompatible
让我有点担心(我的意思是现在一切都很好,但是有一天当我使用我以前从未使用过的 api 时,那里会有隐藏的炸弹......?)
所以我的问题:
我应该担心这个,还是正如预期的那样?
我开始研究一个Go
项目,它使用 Github 私有存储库中的一些私有模块,每当我尝试运行go run main.go
它时,都会出现以下410 Gone
错误:
验证 github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone
我可以轻松地从终端克隆私有 repo,这意味着我的ssh
密钥配置正确。我在这里读到我需要设置GOPRIVATE
环境变量,但我不知道该怎么做。
任何人都可以回答或指向相关教程吗?
转到: v1.13,操作系统: macOS Mojave
我创建了一个小型 go 应用程序。几天前,我从 go 1.15 升级到 1.17,并且还使用go get -u
. 更改后,我的 go.mod 文件中有 2 个 require 块。为什么?这是什么意思?没问题还是有什么东西坏了?
应用程序仍然可以正确构建。
go.mod 文件:
module github.com/jozo/simple-pomodoro
go 1.17
require (
fyne.io/fyne/v2 v2.1.0
github.com/dsnet/golib/memfile v1.0.0
github.com/faiface/beep v1.1.0
github.com/fsnotify/fsnotify v1.5.1 // indirect
github.com/go-gl/gl v0.0.0-20210905235341-f7a045908259 // indirect
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210727001814-0db043d8d5be // indirect
github.com/godbus/dbus/v5 v5.0.5 // indirect
github.com/hajimehoshi/oto v1.0.1 // indirect
github.com/srwiley/oksvg v0.0.0-20210519022825-9fc0c575d5fe // indirect
github.com/srwiley/rasterx v0.0.0-20210519020934-456a8d69b780 // indirect
github.com/yuin/goldmark v1.4.1 // indirect
golang.org/x/exp v0.0.0-20210916165020-5cb4fee858ee // indirect
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d // indirect
golang.org/x/mobile v0.0.0-20210924032853-1c027f395ef7 // indirect
golang.org/x/net v0.0.0-20210929193557-e81a3d93ecf6 // …
Run Code Online (Sandbox Code Playgroud) go mod download
和之间有什么不同go mod tidy
?
当我运行时go mod tidy
,如果找不到导入,它也会下载它。
我已经使用 go modules 安装了一个包(go get in Go 1.13),现在我想删除它。在文档中没有任何关于此的内容,并且在go get docu 中也没有。
手动从 go.mod 中删除包并不能解决问题,因此它保留在 go.sum 中。
我应该如何以干净的方式移除包裹?
在 go mod 中升级 go 版本的正确方法是什么,特别是 1.13 到 1.14?
您是否只需编辑 go.mod 文件并更改go 1.13
为go 1.14
?
我不是在问如何编辑 go.mod 文件,我是在问简单地更改 go.mod 文件中的 go 版本是否合适,并且其他所有内容(所有依赖项)对于项目来说仍然可以?
我遇到了go新模块系统的问题,因为我想定义一个本地模块并将其导入主程序中.本地程序包驻留在主程序包/根文件夹的文件夹中.想象一下以下的项目结构$GOPATH
.
./main.go
package main
import "fmt"
import "example.com/localModule/model"
func main() {
var p = model.Person{name: "Dieter", age:25}
fmt.Printf("Hello %s\n", p.name)
}
Run Code Online (Sandbox Code Playgroud)
./model/person.go
package model
type Person struct {
name string
age int
}
Run Code Online (Sandbox Code Playgroud)
在根文件夹中,我通过调用初始化了一个模块
go mod init example.com/localModule
Run Code Online (Sandbox Code Playgroud)
在model/
文件夹中,然后通过调用初始化子模块
go mod init example.com/localModule/model
Run Code Online (Sandbox Code Playgroud)
在根文件夹中调用以下命令失败.
$ go get
go build example.com/localModule/model: no Go files in
$ go build
main.go:4:8: unknown import path "example.com/localModule/model": cannot find module providing package example.com/localModule/model
Run Code Online (Sandbox Code Playgroud)
go get的错误消息被切断了,我不会错误地解析它.
我不打算推动模块到服务器,并与只需要引用本地包的方式model
,所以我选择了example.com/localModule/ …
我正在尝试导入本地模块,但无法使用go mod
. 我最初使用构建我的项目go mod init github.com/AP/Ch2-GOMS
请注意,我的环境是go1.14
,并且我使用 VSCode 作为编辑器。
这是我的文件夹结构
\nCh2-GOMS\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 handlers\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hello.go\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n
Run Code Online (Sandbox Code Playgroud)\n我的main.go
代码:
package main\n\nimport (\n "log"\n "net/http"\n "os"\n\n "github.com/AP/Ch2-GOMS/handlers" // This gives "could not import github.com/AP/Ch2-GOMS/handlers" lint error\n)\n\nfunc main() {\n\n l := log.New(os.Stdout, "product-api", log.LstdFlags)\n hh := handlers.NewHello(l)\n\n sm := http.NewServeMux()\n sm.Handle("/", hh)\n\n http.ListenAndServe(":9090", nil)\n} \n
Run Code Online (Sandbox Code Playgroud)\n我看不到本地模块的自动完成功能,例如handlers.NewHello
.
go build
生成的go.mod
内容:
module github.com/AP/Ch2-GOMS\ngo …
Run Code Online (Sandbox Code Playgroud) 我一直在进行一组项目,处理更新依赖项,但有一件事我没有明确的答案,这就是为什么生成的总和文件列出了每个依赖项的许多旧版本。
在我们的项目中,我们引入了一些漏洞,尽管
golang.org/x/crypto
我们通过replace
带有安全修复程序的包发布指令解决了旧版本的问题,但这感觉不太正确,可能会将我们锁定在不安全的包版本中。
现在我已经更新了依赖于旧版本的包golang.org/x/crypto
,并使用替换指令循环回包并尝试更新,但我仍然看到列出了旧的包。
我想知道这对我们的项目意味着什么,以及我如何才能找到为什么首先包含这些内容?
运行一个简单的命令
go mod why -m golang.org/x/crypto
表明唯一依赖的项目
golang.org/x/crypto
是我更新的项目。
当尝试查找某些模块时,我在 VS Code 中遇到问题,下图所示的错误表明我的 GOPROXY 设置为关闭,但当我运行 时go env
,我看到 GOPROXY 实际上已设置:GOPROXY="https://repo1.mycompany.com/artifactory/api/go/golang-virtual,https://proxy.golang.org,direct"
我尝试过设置GONOPROXY=''
,正如此评论所建议的那样,但是在运行export GONOPROXY=
或export GONOPROXY=""
并在新的终端选项卡中检查 go env 后,GONOPROXY 仍然设置为:GONOPROXY="*.mycompany.com"
按照 VS Code 的建议运行go mod tidy
,会产生相同的错误消息。
我的 go 环境值是否有可能被设置在我不知道的地方,也许是 Go 环境变量的不同版本?预先致谢,非常感谢任何帮助。
environment-variables go visual-studio-code go-modules goproxy