首页 >后端开发 >Golang >在测试中使用 ioutil.ReadFile() 时如何获取正确的 Go 包目录?

在测试中使用 ioutil.ReadFile() 时如何获取正确的 Go 包目录?

Barbara Streisand
Barbara Streisand原创
2024-12-12 20:41:10884浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn