go 执行时当前目录的获取
package main
import (
"fmt"
"os"
"path/filepath"
"time"
)
func main() {
fmt.Println(filepath.Abs("."))
fmt.Println(os.Getwd())
dir, _ := os.Executable()
exPath := filepath.Dir(dir)
println(dir, exPath)
time.Sleep(time.Second * 100)
}
goland中执行
可以看到GetWd获取的是当前工程目录, 而不是执行文件目录
goland会先build一个exe, 然后再在当前工程目录下'执行', 执行完毕删除, 所以在sleep的时候拷贝出来
在桌面执行, 默认的当前路径是命令行的执行目录, 所以为了保证相对路径的准确, 最好使用
os.Executable()
来源:oschina
链接:https://my.oschina.net/ahaoboy/blog/3211508