首页 > 解决方案 > 如何生成相对于模块路径的路径

问题描述

假设我在 go.mod 中的模块路径是: module github.com/User/Project,我有一个像这样的文件结构:

.
├── go.mod
└── pkg
    └── folder
        └── ...

有没有办法运行一个 Go 程序,该程序将根据您所在的文件夹打印相对于模块路径的路径?

例子:

$ (~) ./executable
$ (~) github.com/User/Project
$ (~/pkg/) ./executable
$ (~/pkg/) github.com/User/Project/pkg
$ (~/pkg/folder) ./executable
$ (~/pkg/folder) github.com/User/Project/pkg/folder

到目前为止,我的思考过程是使用 os.Getwd() 和 exec.cmd("go", "env", "GOMOD").Run() 然后解析 go.mod 文件以找到模块路径等。

标签: gomodulepath

解决方案


有没有办法运行一个 Go 程序,该程序将根据您所在的文件夹打印相对于模块路径的路径?

不。

重新设计。正确的方法是使资产路径成为运行时选项,例如通过环境变量或命令行标志。


推荐阅读