平时习惯了./../作为访问目录的路径,但今天使用golang中fs.ReadDir这个函数的时候发现这个习惯是不正确的。

但是常用的命令并没有分很清楚.和./
在这几个命令中使用.或./都可以到达目录下

ls
cd

错误示范

package mainimport ("fmt""io/fs""os")func main() {fsfile := os.DirFS("./")dir, err := fs.ReadDir(fsfile, "./")if err != nil {return}for _, file := range dir {fmt.Println(file.Name())}}

这样写的话err会出现如下提示(奇怪的是在使用1.22.1rc这个版本中,没有任何提示,而在1.21.5版本中会出现提示没有这个目录)

readdir ./: invalid argument

这是正确的代码

package mainimport ("fmt""io/fs""os")func main() {fsfile := os.DirFS(".") //这里使用./或者.都可以dir, err := fs.ReadDir(fsfile, ".")if err != nil {return}for _, file := range dir {fmt.Println(file.Name())}}

后面查询了一下,.和..是表示目录,而./和../表示目录下,应该是这个原因吧