栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Golang中同时读取文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Golang中同时读取文件

您快要准备好了,只需要在goroutine的同步上做一些工作即可。您的问题是您试图在相同的例程中提供解析器并收集结果,但这无法完成。

我提出以下建议:

  1. 在单独的例程中运行扫描仪,读取所有内容后关闭输入通道。
  2. 运行单独的例程,等待解析器完成工作,然后关闭输出通道。
  3. 在主例程中收集所有结果。

相关更改如下所示:

// Go over a file line by line and queue up a ton of workgo func() {    scanner := bufio.NewScanner(file)    for scanner.Scan() {        jobs <- scanner.Text()    }    close(jobs)}()// Collect all the results...// First, make sure we close the result channel when everything was processedgo func() {    wg.Wait()    close(results)}()// Now, add up the results from the results channel until closedcounts := 0for v := range results {    counts += v}

在操场上完全可用的示例:http :
//play.golang.org/p/coja1_w-fY

值得补充的是,您不一定需要

WaitGroup
实现相同的目标,您需要知道的是何时停止接收结果。例如,可以通过扫描仪广告(在频道上)读取多少行,然后收集器仅读取指定数量的结果(您也需要发送零)来实现。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号