在go lang bytes包中找不到NewBuffer([] bytes,int,int64)方法

时间:2016-03-12 20:29:51

标签: go

我是go语言的新手。我试图了解ioutil内部发生了什么.ReadAll(r Reader,capacity int64)方法。在这个方法中有一行如下:

buf := bytes.NewBuffer(make([]byte, 0, capacity))

但是问题是在字节包里面有一个只带参数的NewBuffer方法:

func NewBuffer(buf []byte) *Buffer

我一次又一次搜索bytes包文档,但找不到带有3个参数的NewBuffer方法。

所以实际上从NewBuffer(make([] byte,int,int64))方法调用的地方?

2 个答案:

答案 0 :(得分:4)

make([]byte, 0, capacity)返回一个新的字节切片([]byte),初始化为长度为0且容量为capacity

换句话说,它可能会帮助您在多行上看到它:

capacity := 100 // or whatever
var myBytes []byte = make([]byte, 0, capacity)
buf := bytes.NewBuffer(myBytes)

答案 1 :(得分:2)

您错过了一个事实,即您使用单个参数调用bytes.NewBuffer()函数,这恰好是一个方法调用 - make([]byte, 0, capacity) - 它返回一个字节切片。