[转]o语言之IO操作(待补充), bytes.Buffer作用??
为什么需要 bytes.Buffer类型??
原文: https://niuzheng.net/archives/1331/
-------------------
前言
在Go中,输入和输出操作都是使用原语实现的,原语将数据模拟成可读的
或者可写的
字节流。
而Go的io包提供了io.Reader
(将数据从某个资源读取到传输缓冲区被流式传输和使用)和io.Writer
(从缓冲区读取数据,并写入目标资源)接口。
-
实现了
io.Reader
接口的唯一方法Read(p []byte)(n int, err error)
,它就是一个读取器。- n 读取到的字节数
- err 发生错误的信息(注意:资源读取完毕返回io.EOF错误)
使用Reader
思路:
Reader
方法内部是循环被调用的,每次迭代都会从数据源取一块数据放入缓冲区p
,资源读取完毕返回io.EOF
错误为止。
我们通过strings.NewReader(string)
创建一个字符串读取器来迭代读取:
输出打印的内容:
How [72 111 119]
ar [32 97 114]
e y [101 32 121]
ou [111 117 32]
tod [116 111 100]
ay [97 121 32]
You [89 111 117]
we [32 119 101]
re [114 101 32]
in [105 110 32]
a b [97 32 98]
ad [97 100 32]
moo [109 111 111]
d y [100 32 121]
est [101 115 116]
erd [101 114 100]
ay [97 121]
The resource is read!
拓展例子(读取文件行数并且打印每一行内容和二进制流)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2017-03-03 【转】好文章
2017-03-03 计算机网络运输层之多路复用与多路分解
2017-03-03 静态NAT、动态NAT、PAT(端口多路复用)的配置
2017-03-03 TCP/IP详解--TCP连接中TIME_WAIT状态过多
2017-03-03 vim中末行去掉^M