登录
首页 >  Golang >  Go问答

如何获取文件所在包的目录,而不是当前工作目录

来源:Golang技术栈

时间:2023-04-09 20:01:30 443浏览 收藏

golang学习网今天将给大家带来《如何获取文件所在包的目录,而不是当前工作目录》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到golang等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我正在制作一个包来对服务进行 API 调用。

我有一个测试包,我只用它来测试 API 调用并测试我只是include将另一个包放入的主包的功能。

在我正在处理的主包中,我有

ioutil.ReadFile(filepath.Abs("Filename.pub"))

没关系,但是当我从我的测试包中调用它时,例如

/Users/####/gocode/src/github.com/testfolder go run main.go

它告诉我

panic: open /Users/####/gocode/src/github.com/testfolder/public.pub: no such file or directory

问题是,它是在寻找public.pub内部testfolder而不是github.com/apipackage/它在哪里。

只是为了澄清这些乱七八糟的词:

API包有一个从同一目录读取的函数

但是因为我包含了 API 包,而 Testfolder 是 CWD,go run main.go而当我试图从中获取它时,testfolder即使 main.go 没有该功能并且只是包含它。

正确答案

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))
}

https://play.golang.org/p/vVa2q-Er6D

理论要掌握,实操不能落!以上关于《如何获取文件所在包的目录,而不是当前工作目录》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表