golang程序中的相对路径与绝对路径问题

781 阅读1分钟

今天我在学习web的时候,发现 “./” 进行当前目录的话,并不管用。 回想起原来java编程用“./” 就是代表当前目录下的。具体编码请大家看下面图片

 正常来讲 “./” 就是代表当前目录下,但是第20行却并没有显示成功。但绝对路径(第18行)却很成功。为了证实程序的当前路径,我还写了第11行的函数来验证。最后打印出来的路径确实是 “D:/MyGo/mygoweb” 这就很苦恼!

后来看了一篇博主的文章才知道, “./” 是当前的工程目录,并不是该go文件所对应的目录。 也就是说:

比如:我这里的 test1.go 文件,路径:MyGo/mygoweb/test1.go。

在 test1.go 中使用 “./” 其路径不是:MyGo/mygoweb/ ,而是:MyGo/

所以这也算一个坑吧。

但是对于这个问题,Go专门提供了一个处理文件路径兼容问题的包:package filepath。

filepath包实现了兼容各操作系统的文件路径的实用操作函数。

具体中文文档可见package filepath | Go 标准库 中文参考 (gitbooks.io) 

总结:

绝对路径:即根本不会变的路径。就是把绝对路径当成地图上的某一个位置,在导航的时候那个目的地是一直在固定的经纬度的。而这个目的地的经纬度就是绝对路径的表示。

相对路径:会相对于你所在的位置而变化的路径。在导航的时候,总会听见距离目的地还有多少米,这个“还有多少米”就可以代表目的地的相对路径。、

  • “.”就代表当前的目录位置
  • “..”就代表为上以及目录的位置
  • “/”代表的是根目录的位置 ​