在使用 go run
命令运行 Go 程序时,程序所在的目录并不一定是项目的根目录,因此需要对获取项目路径的方法进行修改。
可以通过 os.Getwd()
函数获取程序所在的当前工作目录,然后通过循环向上遍历目录来获取项目根目录。具体的代码示例如下:
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// 获取程序所在的当前工作目录
currentDir, err := os.Getwd()
if err != nil {
fmt.Println("获取当前工作目录失败:", err)
return
}
// 从当前目录开始逐级向上遍历目录,直到找到包含 go.mod 文件的目录
for {
// 判断当前目录是否包含 go.mod 文件
if _, err := os.Stat(filepath.Join(currentDir, "go.mod")); !os.IsNotExist(err) {
fmt.Println("项目路径:", currentDir)
break
}
// 获取父级目录
parentDir := filepath.Dir(currentDir)
// 如果父级目录与当前目录相同,则说明已经到达文件系统根目录
if parentDir == currentDir {
fmt.Println("没有找到项目路径")
break
}
// 更新当前目录
currentDir = parentDir
}
}
在上述代码中,首先调用 os.Getwd()
函数获取程序所在的当前工作目录,然后通过循环向上遍历目录,直到找到包含 go.mod
文件的目录为止。如果找到了项目根目录,则输出项目路径;如果未找到,则输出提示信息。
评论(0)