filepath.Walk可递归遍历目录,通过回调函数处理每个文件或目录,支持跳过子目录或终止遍历,常用于文件扫描、过滤或统计场景。
在Go语言中,遍历目录文件是一个常见的需求,比如做文件扫描、日志清理或资源加载。Golang标准库提供了 filepath.Walk 函数,可以递归遍历指定目录下的所有子目录和文件,使用简单且功能强大。
filepath.Walk 函数定义在 path/filepath 包中,其函数签名如下:
func Walk(root string, walkFn WalkFunc) error
它接收两个
参数:
WalkFunc 的定义是:
type WalkFunc func(path string, info os.FileInfo, err error) error
其中:
下面是一个简单的例子,遍历指定目录并打印每个文件或目录的路径:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
root := "./testdir" // 替换为你想遍历的目录
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err // 处理访问错误,比如权限不足
}
fmt.Println(path)
if info.IsDir() {
fmt.Printf("【目录】 %s\n", path)
} else {
fmt.Printf("【文件】 %s (大小: %d)\n", path, info.Size())
}
return nil
})
if err != nil {
fmt.Printf("遍历失败: %v\n", err)
}
}
通过在 WalkFunc 中返回特定的错误值,可以控制遍历流程:
例如,只遍历一级目录,不进入子目录:
if info.IsDir() && path != root {
return filepath.SkipDir // 不进入子目录
}
实际开发中,filepath.Walk 常用于:
注意点:
基本上就这些。filepath.Walk 是 Golang 中最实用的目录遍历工具,掌握它能轻松应对大多数文件系统操作场景。
# golang
# js
# json
# go
# go语言
# 回调函数
# 工具
# ai
# 标准库
# String
# if
# Error
# printf
# 递归
# 循环
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
如何在Golang中捕获JSON序列化错误_Golangjson.Marshal错误处理示例
mac怎么退出id_MAC退出iCloud账号与Apple ID切换【指南】
Mac如何查看电池健康百分比_Mac系统信息电源检测
Go语言中正确反序列化多个同级XML元素为结构体切片的方法
php本地部署后session无法保存_session存储路径与权限设置技巧【技巧】
如何使用Golang捕获测试日志_Golang testing日志记录方法
Golang如何遍历目录文件_Golang filepath.Walk目录遍历操作方法
XML的“混合内容”是什么 怎么用DTD或XSD定义
Python高性能计算项目教程_NumPyCythonGPU并行加速
Windows电脑键盘突然失灵怎么办?(驱动与硬件排查)
Win11蓝牙开关不见了怎么办_Win11蓝牙驱动丢失修复教程【方法】
Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】
Win11如何设置计划任务 Win11定时执行程序教程【详解】
如何使用Golang recover捕获panic_防止程序崩溃并处理异常
php订单日志怎么记录发货_php记录订单发货操作日志指南【指南】
php怎么下载安装并配置环境变量_命令行调用PHP技巧【技巧】
如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践
Win11怎么设置声音输出设备_Windows11音量合成器单独调节应用
Django 密码修改后会话失效的解决方案
使用类变量定义字符串常量时的类型安全最佳实践
c++中的可变参数模板(variadic templates)怎么用_c++模板编程黑魔法【C++11】
如何使用Golang实现文件追加操作_向已有文件追加数据
Windows蓝屏错误0x00000018怎么处理_驱动初始化错误解决
如何诊断并终止卡死的 multiprocessing 子进程
Win11怎么压缩文件 Win11自带压缩解压功能使用【教程】
Windows资源管理器总是卡顿或重启怎么办?(修复方法)
Python网络异常模拟_测试说明【指导】
Win11怎么关闭搜索历史_Win11清除任务栏搜索记录【隐私】
如何使用Golang构建简易投票统计功能_Golang投票数据汇总与展示示例
Python大文件处理策略_内存优化说明【指导】
Go 中的 := 运算符:类型推导机制与使用边界详解
Win11怎么关闭贴靠布局_Win11禁用窗口最大化时的布局菜单
mac怎么查看wifi密码_MAC查看已连接WiFi密码方法【技巧】
Windows笔记本无法进入睡眠模式怎么办?(电源疑难解答)
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
C#如何使用XPathNavigator高效查询XML
Win11触摸板没反应怎么办_开启Win11笔记本触摸板手势教程【步骤】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Win11怎么关闭系统声音_Win11系统提示音静音设置【详解】
c++ namespace命名空间用法_c++避免命名冲突
Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】
MAC怎么一键隐藏桌面所有图标_MAC极简模式切换与终端指令【方法】
php打包exe怎么传递参数_命令行参数接收方法【解答】
Win11怎么关闭通知中心_Windows11系统通知与专注助手设置
Win11文件扩展名怎么显示 Win11查看文件后缀名设置【步骤】
Win11怎么关闭内容自适应亮度_Windows11显示设置CABC关闭
如何使用Golang优化模块引入路径_Golanggo mod tidy清理与优化方法
c# await 一个已经完成的Task会发生什么
如何用正则与预处理高效拦截带干扰符的恶意域名
如何在 PHP 中按相同键合并两个关联数组为二维数组
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。