我是 golang 初学者,尝试更改别人写好的工具时,遇到一个比较初级的问题,希望大佬不吝赐教。
golang 中导入外部 libraries 需要用完整路径,比如 github.com/user1/gotool 的代码中可能有
import "github.com/user1/gotool/cmd/"
如果 fork 项目到github.com/user2/gotool
,项目的 import 路径还是原来项目代码的路径。
此时,如果 fork 后修改了cmd
目录下的某个文件,应当怎么修改 go.mod 文件?
我搜索了一下"golang mod import fork"之类的关键词,出来的教程目前都是针对 fork 依赖库时的对应处理方法,比如
Using forked package import in Go,提供的解决方法都类似于go mod edit -replace="github.com/user1/gotool=github.com/user2/gotool"
。
但是,如果不是库,而是一个完整的工具,github.com/user1/gotool
是 module 而不是 require 。比如go.mod
文件只有下面这几行,没有第三方依赖。
module github.com/user1/gotool
go 1.17
如果只是暂时使用(比如提个 pr ),似乎不作任何修改就能直接运行。但是,如果原来的库作者不再维护了,自己要长期维护一个新的 fork 版本,这个时候应当怎么修改 go.mod 文件以引用自己的 fork 库,使别人可以方便地通过go install github.com/user2/gotool
来安装修改后的工具呢?