以下是一个计算目录大小的Go函数示例:
package main
import (
"fmt"
"os"
)
func dirSize(path string) (int64, error) {
var size int64
err := filepath.Walk(path, func(filePath string, fileInfo os.FileInfo, err error) error {
if !fileInfo.IsDir() {
size += fileInfo.Size()
}
return nil
})
if err != nil {
return 0, err
}
return size, nil
}
func main() {
path := "/path/to/directory"
size, err := dirSize(path)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("Directory size of %s is %d bytes\n", path, size)
}
}
该函数使用filepath.Walk()
函数递归遍历指定路径下的所有文件和子目录,并累加所有文件的大小。最终返回目录的总大小(以字节为单位)。
在主函数中,我们调用该函数计算目录大小,并输出结果。需要注意的是,该函数可能会耗费一些时间,特别是对于大型目录。