go - 如何获取主文件的目录
问题描述
假设它main.go
位于/a/b/c/
。
我想知道的是所在的目录main.go
,也就是/a/b/c
我执行文件的时候。
我搜索了互联网并尝试了许多解决方案,但没有人给我正确的路径。
路径应该与 pwd 无关。
以下 4 个示例应给出相同的路径,/a/b/c
. 我怎样才能实现它?
/a/b/c$ go run main.go
/a/b$ go run c/main.go
/a$ go run b/c/main.go
~$ go run a/b/c/main.go
解决方案
试试这个:
package main
import (
"fmt"
"path"
"runtime"
)
func getDirectory() string {
_, file, _, ok := runtime.Caller(1)
if ok {
return path.Dir(file)
}
return ""
}
func main() {
address := getDirectory()
fmt.Println(address)
}
推荐阅读
- rust - IndexMut需要Index时如何为自定义Trait实现traitIndexMut,针对自定义trait的supertrait实现
- php - 如何 PHPWord foreach 代码块
- vba - 增加倒数计时器的速度
- c - 求解数学表达式时 C 中的浮点问题
- python - 我正在 jupyter notebook 中研究 python。我已经编写了 for 循环代码。我收到一些错误
- c# - 在 ViewModel 中更新其绑定后,按钮未启用
- c - 我们如何才能拥有指向 const 的真正 void 指针?
- .net-core - 如何使用 Quartz.NET 在多个用户各自定义的时间段运行单个作业
- serilog - 如何记录“元”事件,例如最低级别更改?
- kubernetes - istio 入口控制器是否支持会话亲和性