更方便的在微信公众号阅读文章可以关注公众号:海生的go花园
一、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命令。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。