猿问

我应该如何在 Go 中定义一个空切片?

或者更准确地说,我似乎可以做这三件事中的任何一件。它们之间有什么区别吗?哪个是最好的,为什么?

  1. var foo []int

  2. foo := []int{}

  3. foo := make([]int, 0)


牛魔王的故事
浏览 200回答 1
1回答

qq_花开花谢_0

区别在于:是一个零切片 ( foo == nil)。和 3. 是非零切片 ( foo != nil)。以下几点适用于所有三个陈述:该语句不分配内存。切片长度为零:len(foo) == 0。切片容量为零:cap(foo) == 0。因为len、cap和append与 nil 切片一起使用,所以 (1) 通常可以与 (2) 和 (3) 互换使用。所有的选项在 Go 代码中都是常用的。
随时随地看视频慕课网APP

相关分类

Go
我要回答