本篇文章已有348人收藏 | Loading收藏

golang 相对路径与绝对路径是新手最容易踩的坑之一:在代码里用 ./ 读取同目录下的文件,却报「找不到文件」。原因在于 golang 中 ./ 指向的是项目根目录,而不是当前 go 文件所在的目录。本文通过一次真实报错,讲清 golang 中相对路径与绝对路径的区别,并给出正确写法。

起因

今天我在学习golang的时候,发现使用 ./ 表示当前目录,会导致程序找不到当前目录下的文件。如下图所示:
relative-and-absolute-paths-in-golang-01.png

正常来讲 ./ 就是代表当前目录下,但是golang中 ./ 表示的是当前项目根目录。将程序中的路径稍加修改,就可正常读取文件的内容,如下图所示:
relative-and-absolute-paths-in-golang-02.png

总结

在golang中 ./ 表示是当前的工程目录,并不是该go文件所对应的目录。

比如:

图中的 branch.go 文件,路径:GolangStudy/demo06/branch.go

若在 branch.go 中使用 ./ 就表示其路径为:GolangStudy/,而不是:GolangStudy/demo06/

💡 相关阅读:如果你还遇到 golang 导入模块报错 package xx is not in GOROOT 的问题,那是 GOROOT / GOPATH 环境变量与 go mod 模式造成的,另一篇笔记里有完整的解决方案。

我是格雷万事屋屋主,欢迎来到万事屋ヾ(≧▽≦*)o
最后更新于 2026-08-25