list := make([]Item, 0)
和 var list []Item
都是用于创建一个切片(slice)的语法,但它们在 Go 中有一些区别。
-
list := make([]Item, 0)
:- 这是一种使用
make
函数来创建切片的方式,其中Item
是切片的元素类型。 make
函数会为切片分配底层数组的内存,并返回一个指向该切片的引用。- 在这种方式下,
list
是一个空切片,长度为0,容量可以省略(默认为0)。 - 这种方式创建的切片可以立即用于添加元素。
- 这是一种使用
-
var list []Item
:- 这是一种使用
var
声明来创建零值切片的方式。 - 在这种方式下,
list
是一个 nil 切片,它没有底层数组。 - 在使用之前,需要使用
make
函数为它分配底层数组。
- 这是一种使用
示例:
package mainimport "fmt"type Item intfunc main() {// 使用 make 创建一个空切片list1 := make([]Item, 0)fmt.Println("list1:", list1) // 输出: list1: []// 使用 var 声明一个 nil 切片var list2 []Itemif list2 == nil {fmt.Println("list2 is nil")} else {fmt.Println("list2:", list2) // 输出: list2 is nil}
}
总之,两种方式都可以用于创建切片,但 make
方式更常见,因为它创建了一个可用于添加元素的切片,而 var
声明创建的是 nil 切片,需要使用 make
初始化后才能使用。