登录
首页 >  Golang >  Go问答

readString 与 readLine

来源:stackoverflow

时间:2024-04-21 11:39:35 162浏览 收藏

本篇文章向大家介绍《readString 与 readLine》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我正在编写一个应用程序来从文件列表中逐行读取并进行一些处理。我想使用尽可能少的内存。 我遇到了这个问题https://stackoverflow.com/a/41741702/3531263

发帖者说 readString 使用比 readLine 更多的 RAM,并且他们发布了一些代码。 我不明白的是如何使用更多的内存?因为最终,按照他们的代码编写方式,他们仍然将整行写入缓冲区。那么这是否意味着如果他们只使用 readString,结果会是一样的?


解决方案


按照他们的代码编写方式,他们仍然将整行写入缓冲区

他们的代码,是的。 的代码可能不需要整行同时位于内存中。例如,您的程序正在按请求 ID(位于行的开头)过滤日志文件。它不需要读取可能有几兆字节或更多的整行,只是因为请求 ID 错误而拒绝它。但对于 ReadString,你就没有奢侈的选择了。

我同意 Sergio 的观点。另外,看看标准库中的 the current implementationReadLine 调用 ReadSlice('\n') 一次,然后运行几个分支以确保转换后的数据返回适当的标记值或错误。另一方面,ReadBytesReadString 都循环重复调用 ReadSlice(delim),因此它们必然会复制至少ReadLine 一样多的数据到内存中,甚至可能更多第一次通话时为 if the delimiter wasn't found

终于介绍完啦!小伙伴们,这篇关于《readString 与 readLine》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>