ホームページ >バックエンド開発 >Golang >テストで `ioutil.ReadFile()` を使用する場合、Go で正しいパッケージ ディレクトリを取得するにはどうすればよいですか?

テストで `ioutil.ReadFile()` を使用する場合、Go で正しいパッケージ ディレクトリを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-12 20:41:10867ブラウズ

How Can I Get the Correct Package Directory in Go When Using `ioutil.ReadFile()` in Tests?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。