gpt4 book ai didi

go - 如何获取目录总大小?

转载 作者:IT老高 更新时间:2023-10-28 13:09:50 26 4
gpt4 key购买 nike

所以我正在尝试使用 Go 获取目录的总大小。到目前为止,我有这个:

var dirSize int64 = 0

func readSize(path string, file os.FileInfo, err error) error {
if !file.IsDir() {
dirSize += file.Size()
}
return nil
}

func DirSizeMB(path string) float64 {
dirSize = 0
filepath.Walk(path, readSize)
sizeMB := float64(dirSize) / 1024.0 / 1024.0
sizeMB = Round(sizeMB, .5, 2)
return sizeMB
}

问题是dirSize全局变量会导致问题,如果确实如此,我如何将其移动到 DirSizeMB 的范围内功能?

最佳答案

使用这样的全局变量充其量是不好的做法。如果同时调用 DirSizeMB 也是一场竞赛。

简单的解决方案是使用闭包,例如:

func DirSize(path string) (int64, error) {
var size int64
err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
size += info.Size()
}
return err
})
return size, err
}

Playground

如果你认为这样看起来更好,你可以将闭包分配给一个变量。

关于go - 如何获取目录总大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com