所以我试图使用golang获取目录的总大小,到目前为止我有这个
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
}
Run Code Online (Sandbox Code Playgroud)
所以问题是dirSize全局变量是否会导致问题,如果是,我如何将其移动到DirSizeMB函数的范围?
Dav*_*e C 27
像这样的全球化充其量是不好的做法.如果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
}
Run Code Online (Sandbox Code Playgroud)
如果您认为看起来更好,可以将闭包分配给变量.
| 归档时间: |
|
| 查看次数: |
5924 次 |
| 最近记录: |