Go でパッケージ ディレクトリを取得する
ioutil.ReadFile() がディレクトリ内のファイルを見つけようとする問題に直面しています。テストパッケージから呼び出すときにディレクトリが間違っています。この問題は、セットアップで現在の作業ディレクトリ (CWD) がどのように決定されるかに要約されます。
これを解決するには、runtime.Caller() を使用することが解決策です。この関数は、現在の関数の呼び出し元に関する情報を提供します。 runtime.Caller() によって返されたファイル パスを使用すると、ファイルが配置されているパッケージのディレクトリを取得できます。
これは、runtime.Caller():
の使用方法を示す例です。package main import ( "fmt" "runtime" "path" ) func main() { _, filename, _, ok := runtime.Caller(0) if !ok { panic("No caller information") } fmt.Printf("Filename : %q, Dir : %q\n", filename, path.Dir(filename)) }
このコードが実行されると、それを呼び出したファイルのファイル名とディレクトリが出力されます。これにより、CWD に関係なくファイルを正確に見つけることができます。
以上がテストで `ioutil.ReadFile()` を使用する場合、Go で正しいパッケージ ディレクトリを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。