首页 > 解决方案 > 在每次循环迭代中重新声明切片是不好的做法吗?

问题描述

举个例子:

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

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

编辑:对于上述情况,编码器可以超出 for 循环,那么为什么不呢(在我见过的示例中)?

标签: go

解决方案


我希望重用缓冲区:

buf := new(bytes.Buffer)
for {
    buf.Reset()
    //...
}

推荐阅读