1

demo.goのインストールパスを出力するプログラムを作成するにはどうすればよいdemo.exeですか?

D:\>go build demo.go

demo.exeにありD:\ます。に移動demo.exeした後、実行中のパス(にない)のC:\Windows下にが表示されます。D:\C:\Windowsdemo.exeC:\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 に答える