我一直在osx上使用此功能:
// Shortcut to get the path to the current executable func ExecPath() string { var here = os.Args[0] if !strings.HasPrefix(here, "/") { here, _ = exec.LookPath(os.Args[0]) if !strings.HasPrefix(here, "/") { var wd, _ = os.Getwd() here = path.Join(wd, here) } } return here }
…但是它很凌乱,它根本无法在Windows上运行,当然也不能在Windows上的git-bash中运行。
有没有办法做这个跨平台?
注意 具体来说,args [0]取决于二进制文件的调用方式。在某些情况下,它仅是二进制本身,例如。“ app”或“ app.exe”;所以你不能只使用它。
我认为这是传统的操作方式,我认为它可以在任何平台上使用。
import ( "fmt" "os" "path/filepath" ) // Shortcut to get the path to the current executable func ExecPath() string { var here = os.Args[0] here, err := filepath.Abs(here) if err != nil { fmt.Printf("Weird path: %s\n", err) } return here }