Golang获取执行文件目录

2021-07-26    904    go 

背景

在某些应用中会出现执行文件(main.go文件或者其编译后应用)与实际当前所在目录不一致的情况。

例如应用在A目录,现在打开的是B目录,在B目录中执行应用,此时因为应用的静态文件在A目录,应用因为是使用相对路径来调用静态文件,所以会出现报错,因为实际调用的静态文件路径是B目录的,B目录不存在此静态文件就会出现报错。

解决方法就是获取A目录绝对路径,再与相对路径拼接即可。

代码

package utils

import (
	"os"
	"path/filepath"
)

// 执行文件所在位置
func BinPath() (string, error) {
	s, err := os.Executable()
	if err != nil {
		return "", err
	}
	dir := filepath.Dir(s)
	return dir, nil
}