ソースファイル$ PWD/DIR/src.goに私は
os.Open("myfile.txt")
を使用これは正常に見える)。
Goに、src.goと同じディレクトリにあるmyfile.txtを探すように指示する方法はありますか? Rubyに__FILE__
のようなものが必要です。
ソースファイル$ PWD/DIR/src.goに私は
os.Open("myfile.txt")
を使用これは正常に見える)。
Goに、src.goと同じディレクトリにあるmyfile.txtを探すように指示する方法はありますか? Rubyに__FILE__
のようなものが必要です。
Goはソースファイルと同じ場所にあるファイルを探すのに意味がありません。 goバイナリがコンパイルされ、バイナリが実行されるためにソースファイルが存在する必要はありません。そのため、GOはFILEと等価ではありません。 runtime.Caller関数は、バイナリのコンパイル時にファイル名を返します。
実際にこの機能を望んでいた理由を理解していれば、私たちはより良いアドバイスをすることができました。
使用パッケージosext
それはどこ現在実行中のプログラムの実行可能ファイルをフォルダへの絶対パスを返す関数ExecutableFolder()
を提供していますが(cronジョブに便利)に存在します。それはクロスプラットフォームです。
package main
import (
"github.com/kardianos/osext"
"fmt"
"log"
)
func main() {
folderPath, err := osext.ExecutableFolder()
if err != nil {
log.Fatal(err)
}
fmt.Println(folderPath)
}
また、(__FILE__
に類似)の完全な実行可能ファイルのパスを取得することができます:
package main
import (
"github.com/kardianos/osext"
"fmt"
)
func main() {
exeAbsolutePath, _ := osext.Executable()
fmt.Println(exeAbsolutePath)
}
えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ回答回答者: – Blacksad
おそらく、あなたのアプリケーションのためのコンベンションを設定し、そこから実行する場所を基準にしてファイルをロードしたいだけです。 flagsパッケージを使用して、ファイルがコマンドライン上のどこにあるかを伝えてください。 –
はい、そうです。ありがとう! – Blacksad