go 路径/文件路径:在使用不干净的根目录时,将不干净的路径传递给WalkDirFunc,

628mspwn  于 2个月前  发布在  Go
关注(0)|答案(1)|浏览(21)

你使用的Go版本是什么( go version )?

$ go version
go version go1.18beta1 darwin/arm64

这个问题在最新版本中是否会重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/auxten/Library/Caches/go-build"
GOENV="/Users/auxten/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/auxten/Codes/go/pkg/mod"
GONOPROXY="github.com/auxten/*"
GONOSUMDB="github.com/auxten/*"
GOOS="darwin"
GOPATH="/Users/auxten/Codes/go"
GOPRIVATE="github.com/auxten/*"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.18beta1"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/8l/5v4c2kl17hx82psrh8x09grm0000gq/T/go-build2410796747=/tmp/go-build -gno-record-gcc-switches -fno-common"

你做了什么?

假设有一个目录,其中包含一个文件,该文件名为 dir/file1dir/file2

filepath.Walk("dir/../dir", func(path string, info fs.FileInfo, err error) error {
		fmt.Println(path)
		return err
	})

你期望看到什么?

dir
dir/file1
dir/file2

你实际上看到了什么?

dir/../dir
dir/file1
dir/file2

对于 filepath.WalkDir 也是类似的情况。

jjjwad0x

jjjwad0x1#

https://golang.org/cl/378794提到了这个问题:path/filepath: pass clean path to WalkDirFunc and WalkFunc

相关问题