slice[0:0]在Go中有什么作用?

我最近在 Golang 降价解析器中看到了以下代码:

    blankLines := make([]lineStat, 0, 128)
    isBlank := false
    for { // process blocks separated by blank lines
        _, lines, ok := reader.SkipBlankLines()
        if !ok {
            return
        }
        lineNum, _ := reader.Position()
        if lines != 0 {
            blankLines = blankLines[0:0]
            l := len(pc.OpenedBlocks())
            for i := 0; i < l; i++ {
                blankLines = append(blankLines, lineStat{lineNum - 1, i, lines != 0})
            }
        }

我对做什么感到困惑blankLines = blankLines[0:0]。这是一种预先添加到数组的方法吗?

回答

此切片[0:0]创建一个具有相同支持数组但长度为零的切片。它真正做的就是“重置”len切片上的 ,以便可以重新使用底层数组。如果为每次迭代创建一个全新的切片,它可以避免可能需要的分配。


以上是slice[0:0]在Go中有什么作用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>