我正在阅读this博客文章(关于“可能的问题”的最后一节),其中讨论了如何将大片的一部分复制到新的较小片中,以便可以对大片进行垃圾收集。
他们提供的代码是:
func CopyDigits(filename string) []byte {
b, _ := ioutil.ReadFile(filename)
b = digitRegexp.Find(b)
c := make([]byte, len(b))
copy(c, b)
return c
}
文章建议使用append
可以更简洁地构建此函数。我假设这样的事情,但我没有看到这样做的意义:
func CopyDigits(filename string) []byte {
b, _ := ioutil.ReadFile(filename)
b = digitRegexp.Find(b)
return append(make([]byte, len(b)), b...)
}
这也会降低代码效率,因为append
似乎是使用copy
实现的。由于复制到新切片是一种相当常见的操作,最好的方法是什么?