import "./my/path"

如果这是正确的,你如何处理项目的封装和扩展 github 分支?在每一个其他语言中,我可以做一个项目的 github 分支,或者 git clone,所有的东西都封装在那里。如何从 go 项目中获得相同的行为?

使用 go "hello world"示例的简单示例。

你好.go

package main 
 
import ("fmt" 
    "github.com/golang/examples/stringutil") 
 
func main() { 
    fmt.Printf(stringutil.Reverse("hello, world")+"\n") 
} 

上面的效果很好。但是,如果我想使用我自己的 stringutil,它位于一个子目录中并将编译为单个二进制文件,我仍然需要完整路径:

package main 
 
import ("fmt" 
    "github.com/myrepo/examples/util/stringutil") 
 
func main() { 
    fmt.Printf(stringutil.Reverse("hello, world")+"\n") 
} 

现在,如果有人复制或 fork 我的 repo,它会直接依赖于“github.com/myrepo/”,即使它完全在内部使用!

utils/

我在这里错过了什么?为什么相对路径这么糟糕?如何在不更改数十个文件的情况下 fork 引用其自己的子目录(及其包)的项目?