首页 > 解决方案 > 如何获取主文件的目录

问题描述

假设它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

标签: 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)
}

推荐阅读