首页
Preview

Golang 获取当前项目根路径

在使用 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 文件的目录为止。如果找到了项目根目录,则输出项目路径;如果未找到,则输出提示信息。

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
Golang社区
欢迎关注微信公众号:Golang社区

评论(0)

添加评论