golang识别项目文件路径问题

2021年7月27日10:15:52
评论
55

更多分类文章:

Python | Linux | 大数据 | 数据库 | Git | Nodejs | Golang | 电脑技巧 | 计算机技术

 

go读取配置文件时,经常会出现无法识别文件路径的问题。如果能获取到项目的绝对路径,则可以定位到项目中任意文件位置,那么如何获得项目的绝对路径?

可以使用runtime.Caller()方法获取到执行该方法的“项目文件路径”,然后以此为根据,再定位到其他目录(如根目录)。还有个问题,如在项目中可能有一些相对路径参数,比如配置文件中的相对路径,是根据main运行的地方作为workspace,需要使用os.Chdir()方法切换workspace,这样读取相对路径就没问题了。

currentAbPath方法

(源自:https://zhuanlan.zhihu.com/p/363714760)

说明:

1.在go run和go build时获取到的路径有所不同,临时目录/项目目录。

2.用其他方法获取路径,一般获取到的都是以调用入口文件的路径,随着主调文件的不同路径也是不一样的,因此无法用来定位绝对路径。而使用上面方法可以永远固定的该代码块出现的文件位置。


原文链接:golang识别项目文件路径问题

  • 本文由 发表于 2021年7月27日10:15:52
  • 转载请注明:https://www.wanghaoyi.com/golang-file-path.html
golang之package中引用变量与undefined问题 Golang

golang之package中引用变量与undefined问题

问题 遇到过这样的问题,IDE与命令行对变量的引用有所不同。举个例子,需要在一个package下两个文件需要引用同一变量或函数,如果在两个文件中都定义,则在IDE中会提示重复定义了某个变量或函数,那好...
golang创建web监听在tcp6而非tcp4的解决 Golang

golang创建web监听在tcp6而非tcp4的解决

在用golang建立web时,不管是用原生库还是使用gin框架,发现服务器起来后最终都会监听到tcp6。查stackoverflow得知,如果想要默认监听tcp4/tcp6需要修改下源码。 修改$GO...
golang格式化占位符 Golang

golang格式化占位符

golang使用fmt包来实现格式化输出,各类占位符汇总如下: 结构体 # 定义示例类型和变量 type Human struct { Name string } var people = Human...
Docker容器初学笔记整理 Golang

Docker容器初学笔记整理

“Docker是一个开源的应用容器引擎”,这个概念解释说了等于没说。其实就是个虚拟机,如果我们用过类似VMware这样的虚拟机软件就知道了,在windows上可以跑Linux、mac,反过来也可以。但...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: