os.Getwd() 返回进程启动时的当前工作目录绝对路径;它通过系统调用实时获取,需检查错误,不依赖环境变量,区别于 os.Executable()、filepath.Dir(os.Args[0]) 和 os.UserHomeDir()。
直接调用 os.Getwd() 就能获取当前工作目录,它返回路径字符串和可能的错误,使用时记得检查错误。
os.Getwd() 是 Go 标准库中获取程序启动时所在目录(即 current working directory)最常用的方法。它不依赖环境变量,而是通过系统调用实时读取。
func Getwd() (dir string, err error)
/home/user/myproject
实际编码中应始终检查错误,避免静默失败:
package main
import (
"fmt"
"os"
)
func main() {
dir, err := os.Getwd()
if err != nil {
fmt.Printf("获取工作目录失败:%v\n", err)
return
}
fmt.Println("当前工作目录:", dir)
}
别把 Getwd 和以下方法混淆:
os.Executable():返回二进制文件路径,不是工作目录filepath.Dir(os.Args[0]):返回执行
文件所在目录,可能为相对路径或符号链接目标os.UserHomeDir():返回当前用户主目录,与工作目录无关在某些场景下行为容易误解:
go run main.go,Getwd 返回的是 go run 所在的目录,不是 main.go 文件所在目录WORKDIR 设置,未必是镜像根目录基本上就这些。用好 os.Getwd() 关键就两点:记得判错、理解它返回的是“进程启动时的目录”,不是代码位置也不是安装路径。