
本文介绍如何使用 go 标准库中的 `os.getwd()` 函数安全、高效地获取程序运行时的当前工作目录,并提供完整示例、错误处理建议及常见注意事项。
在 Go 语言中,获取当前工作目录(Current Working Directory, CWD)是一个基础但高频的需求,例如用于构建相对路径、读取配置文件或日志写入。标准库 os 包提供了简洁可靠的解决方案:os.Getwd() 函数。
该函数返回两个值:第一个是表示当前工作目录的绝对路径字符串(如 /home/user/project),第二个是 error 类型——当无法确定工作目录时(例如进程工作目录已被删除、权限不足或底层系统调用失败),该错误非 nil,绝不可忽略。
以下是推荐的正确用法示例(含错误处理):
package main
import (
"fmt"
"log"
"os"
)
func main() {
wd, err := os.Getwd()
if err != nil {
log.Fatal("无法获取当前工作目录:", err)
}
fmt.Println("当前工作目录:", wd)
}⚠️ 注意事项:
- os.Getwd() 返回的是启动程序时所在目录,而非源文件所在目录(若需获取可执行文件路径,请用 os.Executable() 配合 filepath.Dir());
- 不要使用 _ 忽略错误(如 wd, _ := os.Getwd()),这会导致静默失败,在生产环境中极易引发路径错误;
- 在容器或服务化部署场景中,CWD 可能为 / 或其他非预期路径,建议结合业务逻辑校验路径有效性(如 os.Stat(wd));
- 该函数是线程安全的,可在 goroutine 中安全调用。
总结:os.Getwd() 是 Go 获取当前工作目录的标准、轻量且跨平台的方式。始终检查并妥善处理其返回的错误,是编写健壮路径相关代码的第一步。











