Golang返回功能

时间:2020-09-24 22:18:14

标签: go

package main

import (
    "crypto/sha256"
    "encoding/hex"
    "fmt"
    "log"
    "os"
    "path/filepath"
)

func findFiles() {
    filepath.Walk("/", func(path string, info os.FileInfo, err error) error {
        fmt.Println(path)
        file, err := os.Open(path)
        if err != nil {
            log.Println(err)
        }
        defer file.Close()
        hash := sha256.New()
        fmt.Println(hex.EncodeToString(hash.Sum(nil)))
        return nil
    })
}

func main() {
    findFiles()
}

所以我想做的是在调用函数时不确定哈希值。

我希望它访问系统中的所有目录和所有文件,而不是对其进行散列并仅将它们打印出来。

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找:

package main

import (
    "crypto/sha256"
    "fmt"
    "io"
    "log"
    "os"
    "path/filepath"
)

func findFiles() {
    filepath.Walk("/", func(path string, info os.FileInfo, err error) error {
        fmt.Println(path)
        file, err := os.Open(path)
        if err != nil {
            log.Println(err)
            return nil
        }
        defer file.Close()
        hash := sha256.New()

        if _, err := io.Copy(hash, file); err != nil {
            log.Println(err)
            return nil
        }

        fmt.Printf("%x\n", hash.Sum(nil))
        return nil
    })
}

func main() {
    findFiles()
}