Golang中V2模块无法正常工作的解决方法
Golang中V2模块无法正常工作的解决方法 我创建了一个包含多个版本的模块:v1.0.0、v1.0.1、v1.1.0 和 v2.0.0。 我创建了一个简单的应用程序来使用这些模块。1.x.x 版本工作正常,但我无法让应用程序使用 v2.0.0 版本。以下是目录结构。
我已经阅读了这篇文章:Go 的主要版本处理很糟糕——来自一个粉丝 | Lane Wagner
我使用的是 Go 1.18。
为什么应用程序使用的是 v1.x.x 版本的模块,而不是 v2.0.0?
// 我发布在 Github 上的模块。
gomath/
├── calc
│ └── calc.go
├── geometry
│ └── cube.go
├── go.mod
├── readme.md
└── v2
├── calc
│ └── calc.go
├── geometry
│ └── cube.go
└── go.mod
myfirstapp $ cat main.go
package main
import (
"fmt"
"github.com/brandon/gomath/geometry"
// v2 路径
"github.com/brandon/gomath/v2/calc"
// v1 路径
//"github.com/brandon/gomath/calc"
)
func main() {
fmt.Println(geometry.CubeVolume(15))
// v2 模块方法 不工作
s := calc.Add(4, 5, 6, 7)
// v1 模块方法 工作
//s := calc.Add(4, 5)
fmt.Println(s)
}
v2 模块看起来像这样。
package calc
func Add(args ...int) int {
sum := 0
for _, v := range args {
sum += v
}
return sum
}
func Sub(x, y int) int {
return x - y
}
错误信息显示应用程序仍在使用 1.x.x 版本的模块。
myfirstapp $ go run main.go
# command-line-arguments
./main.go:16:25: too many arguments in call to calc.Add
have (number, number, number, number)
want (int, int)
Go get 可以毫无问题地安装 v2.0.0。
myfirstapp $ ls -l ~/go/pkg/mod/github.com/brandon/gomath/v2@v2.0.0
total 20
dr-x------ 2 brandon brandon 4096 Apr 11 16:20 calc
dr-x------ 2 brandon brandon 4096 Apr 11 16:20 geometry
-r-------- 1 brandon brandon 53 Apr 11 16:20 go.mod
-r-------- 1 brandon brandon 0 Apr 11 16:20 LICENSE
-r-------- 1 brandon brandon 19 Apr 11 16:20 readme.md
dr-x------ 4 brandon brandon 4096 Apr 11 16:20 v2
更多关于Golang中V2模块无法正常工作的解决方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
4 回复
嗨 @brandon,
myfirstapp 的 go.mod 文件内容是什么?
更多关于Golang中V2模块无法正常工作的解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
brandon:
"github.com/brandon/gomath/geometry"
也许是因为你正在使用 v1 模块中的 geometry 包?
@christophberger go.mod 文件的内容是:
myfirstapp $ cat go.mod
module myfirstapp
go 1.18
require github.com/brandon/gomath v1.0.0
require github.com/brandon/gomath/v2 v2.0.0 // indirect


