golang源码分析
文章平均质量分 50
qq_34893654
这个作者很懒,什么都没留下…
展开
-
range实现
在 Golang 中,range实际上是使用了迭代器模式来实现的。具体来说,对于数组、切片、字符串等容器类型,range实际上是调用了容器对象的迭代器对象的Next()方法来依次遍历容器中的元素。对于 map 类型,range实际上是遍历了容器的 key 集合,并依次取出每个 key 对应的 value 值进行返回。对于通道(channel)类型,range实际上是在遍历通道的同时进行等待,直到通道被关闭或者发生阻塞等待才退出循环。在遍历通道时,使用range。原创 2023-02-28 09:42:21 · 68 阅读 · 0 评论 -
bufio包的实现原理,为什么能提高IO效率
在每次进行IO操作时,先尝试从缓冲区中读取或写入数据,如果缓冲区中的数据足够,就直接返回缓冲区的数据,避免了频繁的系统调用;否则就调用底层的IO操作,读取或写入足够的数据到缓冲区,并返回缓冲区中的数据。例如,当需要读取一个文件时,如果每次只读取一个字节,那么系统调用的次数将会非常频繁,从而影响读取效率。从缓冲区或底层io.Reader中读取数据,将读取的数据存储到p中,并返回读取的字节数n和可能发生的错误err。将p中的数据写入缓冲区或底层io.Writer中,返回写入的字节数n和可能发生的错误err。原创 2023-02-26 11:53:20 · 266 阅读 · 0 评论