Mendapatkan Direktori Pakej dalam Go
Anda menghadapi isu di mana ioutil.ReadFile() cuba mencari fail dalam direktori yang salah apabila anda memanggilnya daripada pakej ujian. Masalahnya berpunca daripada cara direktori kerja semasa (CWD) ditentukan dalam persediaan anda.
Untuk menyelesaikannya, penyelesaiannya terletak pada penggunaan runtime.Caller(). Fungsi ini menyediakan maklumat tentang pemanggil fungsi semasa. Dengan menggunakan laluan fail yang dikembalikan oleh runtime.Caller(), anda boleh mendapatkan direktori pakej di mana fail itu berada.
Berikut ialah contoh yang menunjukkan cara menggunakan 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)) }
Apabila kod ini dilaksanakan, ia akan mencetak nama fail dan direktori fail yang memanggilnya. Ini membolehkan anda mengesan fail dengan tepat tanpa mengira CWD.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Direktori Pakej yang Betul dalam Go Apabila Menggunakan `ioutil.ReadFile()` dalam Ujian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!