夜里睡不着,再写一篇
bufio主要包含的是带缓冲的IO操作,表面上看不难,但是源码研究下还是挺有意思的,我们来看看大佬是怎么写代码的,首先从Writer开始说
Writer
带缓冲的Writer图解
缓冲就像一个装水的瓶子,如果瓶子不满就可以一直往里面倒水。过程很生活化,我们可以看到这个倒水过程需要解决下面几个问题:
一、瓶子的容量是固定的,当前水位是不确定的,要随时准确记录
二、准备倒的水(C1)要和剩余的缓冲(C2)进行比较,根据比较结果进行后续操作
主要的原理就是上述两条,下面画个图直观看下
其中buf是一个[]byte,容量固定。n表示当前已缓存的容量,那么剩余容量 = len(buf) - n,公式比较简单