25、Go语言并发模式与文件搜索实战

Go语言并发模式与文件搜索实战

1. 并发文件搜索

在进行文件搜索时,若文件为普通文件而非目录,可依据指定选项比较文件名或文件内容。
- 检查文件名 :检查文件名较为简单,代码如下:

if o == nil || !o.Contents {
    if name == term {
        select {
        case <-ctx.Done():
        default:
            ch <- Result{File: file}
        }
    }
    return
}
  • 检查文件内容 :若要搜索文件内容,需先打开文件:
f, err := os.Open(file)
if err != nil {
    select {
    case <-ctx.Done():
    default:
        ch <- Result{File: file, Err: err}
    }
    return
}
defer f.Close()

接着逐行读取文件以搜索指定术语,若读取文件时上下文过期,则停止所有操作:

scanner, matches, line := bufio.NewScanner(f), []Match{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值