go - 在每次循环迭代中重新声明 slice 是不好的做法吗?

标签 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()
    //...
}

关于go - 在每次循环迭代中重新声明 slice 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55984982/

相关文章:

使用 2 个 CPU 的 Go 服务器

go - 如何连接 io.Reader 和 io.Writer?

json - 仅解码已批准的字段

Golang 将 float64 转换为 int 错误

go - 无法再在 golang 中加载包

go - 使用 go run 设置 GOOS

regex - 将特定的返回查询转换为 mgo

json - 如何在Go中直接打印从http.Get获取的json到http.ResponseWriter?

go - Protobuf 错误 - 找到包 main (main.go) 和 __ (person.pb.go)

go - 如何让 CORS 与 golang chi 服务器一起工作?