io/ioutil源码 - 关于readall接口的疑问

NextLeaves · 2020-01-19 13:43:11 · 2137 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-01-19 13:43:11 的主题,其中的信息可能已经有所发展或是发生改变。

io/ioutil源码下, 有一个方法是readAll(); 其中共有一段代码

        if int64(int(capacity)) == capacity {
            buf.Grow(int(capacity))
        }

想知道不相等的情况下, 是什么时候喃? 谢谢有知道的大佬, 刹一脚, 解答一下.

以下是接口所有代码:

func readAll(r io.Reader, capacity int64) (b []byte, err error) {
    var buf bytes.Buffer
    // If the buffer overflows, we will get bytes.ErrTooLarge.
    // Return that as an error. Any other panic remains.
    defer func() {
        e := recover()
        if e == nil {
            return
        }
        if panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge {
            err = panicErr
        } else {
            panic(e)
        }
    }()
    if int64(int(capacity)) == capacity {
        buf.Grow(int(capacity))
    }
    _, err = buf.ReadFrom(r)
    return buf.Bytes(), err
}

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

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

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