获取路径
os.Getwd()
获取工作目录, 输出当前的工作目录('一般是项目的根路径') 语法:
wordDir, err := os.Getwd()
例子:
在E:\Web\Golang\src\01\21\server
目录运行
wordDir, err := os.Getwd()
fmt.Println("wd", wordDir)
// out: E:\Web\Golang\src\01\21\server
os.Args[0]
获取当前运行环境的可执行文件路径 这个列表里保存的是程序的启动参数,而参数0按照约定是程序的可执行文件名。 语法:
rt := os.Args[0]
例子:
在E:\Web\Golang\src\01\21\server
目录运行main.go
文件, air
默认把build
打包后的可执行文件main.exe
的E:\Web\Golang\src\01\21/server/tmp
目录下
fmt.Println("os", os.Args[0])
// out: E:\Web\Golang\src\01\21\server\tmp\main.exe
runtime.Caller(0)
获取运行时的文件路径 拿到当前正在执行的代码的文件路径,推断出程序的根目录了
例子:
在E:\Web\Golang\src\01\21\server
目录运行main.go
文件
_, filename, _, _ := runtime.Caller(0)
fmt.Println(filename)
// out: E:/Web/Golang/src/01/21/server/api/auth.go
package utils
import (
"path"
"runtime"
)
func GetPath(args ...any) string {
var dir string
if len(args) < 2 || args[1] == "" {
dir = "/config/"
}
_, filename, _, _ := runtime.Caller(0)
root := path.Dir(path.Dir(filename)) //获取当前工作目录
dirPath := path.Dir(root + dir) // 获取配置文件的目录
filePath := path.Join(dirPath, args[0].(string)) // 获取配置文件
return filePath
}