要声明一个具有固定大小的空切片,最好这样做:
mySlice1 := make([]int, 0)
要么:
mySlice2 := []int{}
只想知道哪种方法是正确的。
您提供的两个选择在语义上是相同的,但是使用make([]int, 0)会导致内部调用 runtime.makeslice (Go 1.14)。
make([]int, 0)
您还可以选择保留其nil值:
nil
var myslice []int
如Golang.org博客中所述:
nil切片在功能上等效于零长度切片,即使它没有指向任何内容。它的长度为零,可以附加分配。
甲nil片段将然而json.Marshal()入"null"而空片将编组成"[]",如通过@farwayer指出。
json.Marshal()
"null"
"[]"
如@ArmanOrdookhani所指出的,以上选项均不会导致任何分配。