golang中io操作与其中读写指针移动的体现

舒小贱 · · 2191 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


图1



图2


从图1和图2的对比中可以 看到,图2少了第15行的读取操作,然后图2代码运行的结果,就是全部的hello worldABCDEFG,图1的代码就只有从read之后算起的ABCDEFG。

原因是什么呢?

读写指针在其中作怪!每次的读写操作都是从指针位置开始的。

图1中,第一次read之后,读写指针已经跑到hello word这个地方了,不是在0处,所以第二次read的结果是从这个非零指针之后开始往后读的,所以结果就只有后面的ABCDEFG。

图2中,刚开始没有进行read操作,所以读写指针一直保持在零处,所以下一次read是从零处开始读取的。结果为全部的hello worldABCDEFG。



图3

从图3可以看到,用buf.string()这种方式可以看到并没有进行读指针的移动。



图4

从图4可以看到,第一次打印出是hello world而不是hello worldhello world,是因为有一次read操作。读指针被移动了。

第二次打印出hello worldhello world是因为又写了一次。说明wtire写操作不移动指针,read读操作才移动指针。



图5

从图5的ReadByte()和UnreadByte()操作,更能清晰的看到读写指针的移动。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:舒小贱

查看原文:golang中io操作与其中读写指针移动的体现

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2191 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传