Heim >Backend-Entwicklung >Golang >Wie kann ich das richtige Paketverzeichnis in Go abrufen, wenn ich „ioutil.ReadFile()' in Tests verwende?

Wie kann ich das richtige Paketverzeichnis in Go abrufen, wenn ich „ioutil.ReadFile()' in Tests verwende?

Barbara Streisand
Barbara StreisandOriginal
2024-12-12 20:41:10884Durchsuche

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

Abrufen des Paketverzeichnisses in Go

Sie stehen vor einem Problem, bei dem ioutil.ReadFile() versucht, eine Datei im zu finden Falsches Verzeichnis, wenn Sie es aus einem Testpaket aufrufen. Das Problem läuft darauf hinaus, wie das aktuelle Arbeitsverzeichnis (CWD) in Ihrem Setup ermittelt wird.

Um dieses Problem zu beheben, liegt die Lösung in der Verwendung von runtime.Caller(). Diese Funktion liefert Informationen über den Aufrufer der aktuellen Funktion. Mithilfe des von runtime.Caller() zurückgegebenen Dateipfads können Sie das Verzeichnis des Pakets ableiten, in dem sich die Datei befindet.

Hier ist ein Beispiel, das zeigt, wie runtime.Caller() verwendet wird:

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))
}

Wenn dieser Code ausgeführt wird, werden der Dateiname und das Verzeichnis der Datei gedruckt, die ihn aufgerufen hat. Dadurch können Sie Dateien unabhängig vom CWD genau lokalisieren.

Das obige ist der detaillierte Inhalt vonWie kann ich das richtige Paketverzeichnis in Go abrufen, wenn ich „ioutil.ReadFile()' in Tests verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn