我是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))方法调用的地方?
答案 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)
- 它返回一个字节切片。