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

时间:2015-01-20 18:47:24

标签: go

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

  1. var foo []int
  2. foo := []int{}
  3. foo := make([]int, 0)

1 个答案:

答案 0 :(得分:8)

1)是零片。

2)和3)是非零切片,长度为零,容量为零。

Playground example

没有选项可以分配内存。

Go代码中通常使用所有选项。

由于lencapappend适用于零片段,1)通常可以与2)和3)互换使用。