管理硬编码的导入路径

在 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 绑定来到 Go,我想从 3.2 进行更新。

我的项目中可能有多个使用 glfw 的 Go 文件。我不想深入研究每一个并手动更新导入的版本。理想情况下,我也不会复制那么长的路径,并且我可以在每个项目的一个位置定义它。

  • 也许我可以编写一个脚本来查找+替换“github.com/go-gl/glfw/v3.2/glfw”

  • 也许我可以和 Genny 一起模板化文件

  • 也许我可以在根Go路径“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

目前其他人如何处理这个问题?


喵喵时光机
浏览 73回答 0
0回答

FFIVE

请参阅github.com/golang/go/wiki/Modules了解管理包版本的推荐方法。
打开App,查看更多内容
随时随地看视频慕课网APP