go 获取当前目录绝对路径pwd

2年前 (2022) 程序员胖胖胖虎阿
212 0 0

一、go使用os.Getwd()获取当前目录的绝对路径,等同于pwd

func TestPwd(t *testing.T) {
    pwd, err := os.Getwd()
    t.Log(pwd, err)
}

输出:

/Users/zhanghaisheng/study/dataStructure/file 
<nil>

二、源码阅读os.Getwd()

源码路径在 src/os/getwd.go

// Getwd 获取当前目录绝对路径
func Getwd() (dir string, err error) {
    if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
        return syscall.Getwd()
    }

    // Clumsy but widespread kludge:
    // if $PWD is set and matches ".", use it.
    dot, err := statNolog(".")
    if err != nil {
        return "", err
    }
    dir = Getenv("PWD")
    if len(dir) > 0 && dir[0] == '/' {
        d, err := statNolog(dir)
        if err == nil && SameFile(dot, d) {
            return dir, nil
        }
    }
.........省略

我们看到 有一行代码

dir = Getenv("PWD")

说明在底层,这个函数其实也是调用了 系统的pwd命令。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月3日 上午12:56。
转载请注明:go 获取当前目录绝对路径pwd | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...