关于go:go-获取当前目录绝对路径pwd

31次阅读

共计 580 个字符,预计需要花费 2 分钟才能阅读完成。

一、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 命令。

正文完
 0