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
Freigeben: 2024-12-12 20:41:10
Original
881 Leute haben es durchsucht

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))
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage