我在我的项目中使用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\nRun 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} \nRun 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