小编典典

初始化空切片的正确方法

go

要声明一个具有固定大小的空切片,最好这样做:

mySlice1 := make([]int, 0)

要么:

mySlice2 := []int{}

只想知道哪种方法是正确的。


阅读 237

收藏
2020-07-02

共1个答案

小编典典

您提供的两个选择在语义上是相同的,但是使用make([]int, 0)会导致内部调用 runtime.makeslice (Go 1.14)。

您还可以选择保留其nil值:

var myslice []int

Golang.org博客中所述

nil切片在功能上等效于零长度切片,即使它没有指向任何内容。它的长度为零,可以附加分配。

nil片段将然而json.Marshal()"null"而空片将编组成"[]",如通过@farwayer指出。

如@ArmanOrdookhani所指出的,以上选项均不会导致任何分配。

2020-07-02