
go 标准库的 `os.getwd()` 函数可安全、高效地获取程序运行时的当前工作目录,返回绝对路径及可能的错误,是跨平台获取工作路径的标准方式。
在 Go 中,获取当前工作目录(Current Working Directory, CWD)无需依赖第三方包——标准库 os 包已提供简洁可靠的接口:os.Getwd()。该函数返回两个值:一个字符串类型的绝对路径(如 /home/user/project),以及一个 error 类型的错误值。它在 Linux、macOS 和 Windows 上均能正确工作,且行为符合 POSIX 规范。
以下是一个完整、健壮的使用示例:
package main
import (
"fmt"
"log"
"os"
)
func main() {
wd, err := os.Getwd()
if err != nil {
log.Fatal("无法获取当前工作目录:", err) // 不应忽略错误
}
fmt.Println("当前工作目录:", wd)
}⚠️ 重要注意事项:
- 切勿忽略错误:os.Getwd() 在路径不可访问(如权限不足、目录被删除或符号链接循环)时会返回非 nil 错误。生产代码中必须显式检查并处理 err。
- 返回路径为绝对路径,不含末尾斜杠(如 /tmp 而非 /tmp/)。
- 该路径反映的是进程启动时的工作目录(即执行 go run 或二进制文件时所在的目录),不受 os.Chdir() 影响(除非主动调用);若需动态跟踪变更,请结合 os.Chdir 使用并自行维护状态。
- 若需获取源码所在目录(而非运行时工作目录),应使用 runtime.Executable() + filepath.Dir 或 Go 1.16+ 的 embed + debug.ReadBuildInfo 等方案——这与 Getwd 的语义完全不同。
总之,os.Getwd() 是获取当前工作目录的首选、标准且跨平台的方法,只需正确处理错误,即可在各类 Go 应用(CLI 工具、配置加载器、文件操作前置校验等)中安全使用。










