Golang 1.11 beta 3模块问题解析
Golang 1.11 beta 3模块问题解析 macOS 10.13.6 Golang 1.11 beta 3
你好,我最近在 https://github.com/ying32/govcl 发现了一个有趣的库。按照说明,我输入了命令 go get github.com/ying32/govcl。与预期会在 src/github.com 文件夹下创建新文件不同,结果却生成了以下文件夹…

好吧,显然这是"模块"功能在发挥作用,我想。
于是我在 GOPATH 之外创建了一个测试 Go 应用程序,因为"模块"允许这样做。
我将其放在 ~/code/go/test/govcl 目录下。我还通过输入 go mod init github.com/ying32/govcl 创建了一个 .mod 文件。
这创建了一个包含以下内容的 .mod 文件…
module github.com/ying32/govcl
但是,当我尝试使用 go run main.go 构建应用程序时,出现以下错误信息…
└─❱❱❱ go run main.go +913 11:04 ❰─┘
go: finding github.com/ying32/govcl/vcl latest
go: import "github.com/ying32/govcl/vcl": cannot find module providing package github.com/ying32/govcl/vcl
我检查过,文件夹 go/pkg/mod/github.com/ying32/govcl@v1.1.20/vcl 确实存在。我是否需要修改 go.mod 文件以考虑版本信息?我原本期望 Go 会处理这类细节。除非我遗漏了什么非常明显的东西,否则这肯定不像我希望的那样轻松。
有人能对此有所启发吗?谢谢!
更多关于Golang 1.11 beta 3模块问题解析的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang 1.11 beta 3模块问题解析的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个典型的Go模块版本管理问题。在Go 1.11的模块系统中,当依赖库使用了语义化版本控制时,需要正确指定版本路径。
问题在于github.com/ying32/govcl库使用了v2+版本的模块路径约定,但你的导入语句没有包含版本信息。
解决方案是修改你的导入路径,在导入语句中包含版本信息:
import "github.com/ying32/govcl/vcl/v2"
或者如果你需要特定版本:
import "github.com/ying32/govcl/vcl/v1.1.20"
同时,确保你的go.mod文件正确解析依赖。你可以运行以下命令让Go模块自动处理依赖:
go mod tidy
或者手动添加依赖:
go get github.com/ying32/govcl/vcl@v1.1.20
检查你的main.go文件中的导入语句,应该类似于:
package main
import (
"github.com/ying32/govcl/vcl"
)
func main() {
vcl.Application.Initialize()
vcl.Application.Run()
}
如果问题仍然存在,删除go.mod和go.sum文件,然后重新初始化模块:
rm go.mod go.sum
go mod init your-module-name
go mod tidy
Go模块系统会自动下载正确版本的依赖并解析导入路径。

