1

如何编写demo.go打印安装路径的程序demo.exe

D:\>go build demo.go

demo.exeD:\. 移动demo.exe到后C:\Windows,然后在D:\路径下(它不在C:\Windows)运行demo.exe应该打印C:\Windows

下图显示的不是这种情况下的工作(因为 demo.exe 总是得到它当前的执行路径,而不是它的真正路径)。这只是告诉您当前的执行目录,而不是包含文件 https://github.com/axgle/go/blob/master/may_app_path_bug.jpg的目录

更新:window/linux 解决方案在这里 https://github.com/axgle/app

4

2 回答 2

3
package main

import (
    "fmt"
    "path/filepath"
    "os"
)

func main() {
    path, err := filepath.Abs(os.Args[0])
    if err != nil { panic(err) }
    fmt.Println(path)
}

os.Args通过阅读和了解更多信息filepath.Abs

于 2012-05-12T13:35:20.123 回答
1

可以尝试从例如:

package main

import "os"

func main() {
        println(os.Args[0])
}

$ go run main.go
/tmp/go-build135649844/command-line-arguments/_obj/a.out
$

(仅在 Linux 上测试,但 os 包应该是跨平台的,如果可能的话)

于 2012-05-12T13:17:24.177 回答