猿问

为什么这是文件路径。步行示例具有排除窗口和计划9的构建标记

在 https://pkg.go.dev/path/filepath#Walk


代码示例是


// +build !windows,!plan9


package main


import (

    "fmt"

    "io/fs"

    "os"

    "path/filepath"

)


func prepareTestDirTree(tree string) (string, error) {

    tmpDir, err := os.MkdirTemp("", "")

    if err != nil {

        return "", fmt.Errorf("error creating temp directory: %v\n", err)

    }


    err = os.MkdirAll(filepath.Join(tmpDir, tree), 0755)

    if err != nil {

        os.RemoveAll(tmpDir)

        return "", err

    }


    return tmpDir, nil

}


func main() {

    tmpDir, err := prepareTestDirTree("dir/to/walk/skip")

    if err != nil {

        fmt.Printf("unable to create test dir tree: %v\n", err)

        return

    }

    defer os.RemoveAll(tmpDir)

    os.Chdir(tmpDir)


    subDirToSkip := "skip"


    fmt.Println("On Unix:")

    err = filepath.Walk(".", func(path string, info fs.FileInfo, err error) error {

        if err != nil {

            fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", path, err)

            return err

        }

        if info.IsDir() && info.Name() == subDirToSkip {

            fmt.Printf("skipping a dir without errors: %+v \n", info.Name())

            return filepath.SkipDir

        }

        fmt.Printf("visited file or dir: %q\n", path)

        return nil

    })

    if err != nil {

        fmt.Printf("error walking the path %q: %v\n", tmpDir, err)

        return

    }

}

为什么围棋作者排除了窗户和计划9?


牧羊人nacy
浏览 84回答 1
1回答

缥缈止盈

不知何故,此更改是与提交消息一起添加的make Walk example runnable in the playgroundhttps://github.com/golang/go/commit/940811922fb528fabda91a2b2dbb401a06aeb1b3更多评论在 https://go-review.googlesource.com/c/go/+/122237/
随时随地看视频慕课网APP

相关分类

Go
我要回答