最简洁的方法来复制大切片的一部分

时间:2017-10-09 17:48:50

标签: go

我正在阅读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实现的。由于复制到新切片是一种相当常见的操作,最好的方法是什么?

0 个答案:

没有答案