go - 在每次循环迭代中重新声明切片是不好的做法吗?
问题描述
举个例子:
for {
myData := <-myChan
buf := new(bytes.Buffer)
encoder := gob.NewEncoder(buf)
err := encoder.Encode(myData)
...
我可以将buf := new(...
for 循环放在上面以节省处理器和一些内存,但这会导致任何问题吗?我看到的例子new
在循环中。
编辑:对于上述情况,编码器可以超出 for 循环,那么为什么不呢(在我见过的示例中)?
解决方案
我希望重用缓冲区:
buf := new(bytes.Buffer)
for {
buf.Reset()
//...
}
推荐阅读
- java - 始终为 Null 时可调用
- c# - 在 C# 中多次询问用户同一个问题
- javascript - 为什么我不能以相同的方式将函数 () 绑定到 onload 事件和 resize 事件?
- graphviz - graphviz 在同一节点上多条边
- java - 更好的 Dagger 封装
- c# - 为什么导出的 ECDSA 密钥看起来很相似?
- c# - 我应该使用链表还是列表以及如何序列化它。
- swift - 一次调用 swift 从 Firebase 中的多个节点中删除值
- vba - 用户定义函数 VBA 中的 #Value 错误
- javascript - 未捕获的类型错误:无法使用对象读取未定义的属性“indexOf”