在go中,一些包的版本化是很常见的。所以一个程序可能是这样的:
package main
import (
"github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/glfw/v3.2/glfw"
)
// ... do stuff
有时候,我可能想更新glfw的版本。让我们想象一下glfw 3.3绑定即将开始,我想从3.2更新。
我可能在一个项目中有多个go文件都使用glfw。我不想每一个都手动更新导入的版本。理想情况下,我也不会复制长路径,我可以在每个项目的一个地方定义它。
-
也许我可以编写一个脚本来查找+替换“github.com/go gl/glfw/v3.2/glfw”
-
也许我可以给genny做个模板
-
也许我可以在根路径“glfw”中创建一个符号链接->“github.com/go gl/glfw/v3.2/glfw”,在更改版本时更新它,然后使用
import "glfw"
-
但是这些信息就存在于项目的“外部”,所以没有人知道要使用什么版本的克隆我的项目
-
但这是一个全局性的变化,我可能有多个项目需要依赖于不同的版本
理想情况下,我可以在每个源文件中执行以下操作:
package main
import (
$gl
$glfw
)
在一些项目级的点文件中,类似于:
gl=github.com/go-gl/gl/v3.3-core/gl
glfw=github.com/go-gl/glfw/v3.2/glfw
或者,附加到
go build
定义的常量可能类似于:
go build -Dgl=github.com/go-gl/gl/v3.3-core/gl -Dglfw=github.com/go-gl/glfw/v3.2/glfw
其他人现在是怎么处理的?