一个框架和处理逻辑解耦的例子,我们应该学习这种模式

filepath.WalkDir() 是 Go 语言标准库中 path/filepath 包提供的一个函数,用于遍历指定目录下的所有文件和子目录。

使用到了回调函数。WalkDir()里面使用到了递归调用。

filepath.WalkDir() 通过回调函数将具体执行逻辑与遍历过程本身解耦,使得开发者可以在回调函数中实现自定义的逻辑,如过滤特定类型的文件、处理文件内容等。

要实现框架和处理逻辑解耦,可以使用回调函数。

go 复制代码
package main  
  
import (  
    "fmt"  
    "io/fs"  
    "path/filepath"  
)  
  
func visit(path string, d fs.DirEntry, err error) error {  
    if err != nil {  
        return err // 如果有错误发生,返回错误  
    }  
    fmt.Println(path) // 打印当前遍历到的目录或文件的路径  
    return nil  
}  
  
func main() {  
    root := "./" // 指定要遍历的根目录  
    err := filepath.WalkDir(root, visit)  
    if err != nil {  
        fmt.Println("error walking the path:", err)  
        return  
    }  
}
相关推荐
foxsen_xia10 小时前
go(基础10)——错误处理
开发语言·后端·golang
雨中散步撒哈拉10 小时前
21、做中学 | 高一上期 |Golang单元测试
golang·单元测试·log4j
熬了夜的程序员11 小时前
【RUSTFS】rustfs的go语言sdk
开发语言·后端·golang
卿雪11 小时前
缓存异常:缓存击穿、缓存穿透、缓存雪崩 及其解决方案
java·数据库·redis·python·mysql·缓存·golang
wan_da_ren12 小时前
Windows 环境下使用 Go Modules 拉取带外层 Basic Auth 的私有 GitLab 仓库 — 完整解决方案
windows·golang·gitlab
卿雪12 小时前
Redis的数据类型 + 底层实现:String、Hash、List、Set、ZSet
数据结构·数据库·redis·python·mysql·缓存·golang
liupenglove12 小时前
go-echarts基础使用方法
开发语言·golang·echarts
Tony Bai12 小时前
Go 2025云原生与可观测年度报告:底层性能革新与生态固防
开发语言·后端·云原生·golang
卿雪13 小时前
MySQL【索引】:索引的概念与分类
java·数据库·python·mysql·adb·golang
资深web全栈开发13 小时前
从零构建即时通讯系统:Go + Vue3 实战指南
开发语言·后端·golang·im 通许