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