在每次循环迭代中重新声明切片是否是错误的做法?

hor*_*air 0 go

举个例子:

for {
    myData := <-myChan
    buf := new(bytes.Buffer)
    encoder := gob.NewEncoder(buf)
    err := encoder.Encode(myData)
    ...
Run Code Online (Sandbox Code Playgroud)

我可以将它放在buf := new(...for循环之上以节省处理器和一些内存,但这会引起任何问题吗?我看到的示例new在循环中。

编辑:对于上述情况,编码器可能会超出for循环,所以为什么不这样做(在我所看到的示例中)?

pet*_*rSO 7

我希望重用缓冲区:

buf := new(bytes.Buffer)
for {
    buf.Reset()
    //...
}
Run Code Online (Sandbox Code Playgroud)