切片[0:0]在Go中做什么?

切片[0:0]在Go中做什么?,go,Go,我最近在Golang markdown解析器中看到了以下代码: blankLines:=make([]lineStat,0,128) isBlank:=false 对于{//由空行分隔的进程块 _,行,确定:=reader.SkipBlankLines() 如果!好的{ 返回 } lineNum,:=reader.Position() 如果行数!=0{ 空白线=空白线[0:0] l:=len(pc.OpenedBlocks()) 对于i:=0;i

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

blankLines:=make([]lineStat,0,128)
isBlank:=false
对于{//由空行分隔的进程块
_,行,确定:=reader.SkipBlankLines()
如果!好的{
返回
}
lineNum,:=reader.Position()
如果行数!=0{
空白线=空白线[0:0]
l:=len(pc.OpenedBlocks())
对于i:=0;i

我搞不清楚
blankLines=blankLines[0:0]
是做什么的。这是一种预编数组的方法吗?

这个切片
[0:0]
创建了一个具有相同背景数组但长度为零的切片。它真正做的只是“重置”切片上的
len
,这样底层数组就可以重复使用。它避免了在每次迭代中创建一个全新切片时可能需要的分配。

这不是数组,您在这里处理的是切片。这被认为是语言的一个基本概念,例如。哎哟,我指的是切片。我是j对于b/c来说,创建一个空片段似乎毫无意义。