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!