代码之家  ›  专栏  ›  技术社区  ›  Ben Sarah Golightly

go:管理硬编码导入路径

go
  •  0
  • Ben Sarah Golightly  · 技术社区  · 5 年前

    在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
    

    其他人现在是怎么处理的?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Cerise Limón    5 年前

    github.com/golang/go/wiki/Modules 有关管理包版本的建议方法。