为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
牛魔王的故事 2021-09-13 09:59:01
或者更准确地说,我似乎可以做这三件事中的任何一件。它们之间有什么区别吗?哪个是最好的,为什么?var foo []intfoo := []int{}foo := make([]int, 0)
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

区别在于:

  1. 是一个零切片 ( foo == nil)。

  2. 和 3. 是非零切片 ( foo != nil)。

以下几点适用于所有三个陈述:

  • 该语句不分配内存。

  • 切片长度为零:len(foo) == 0

  • 切片容量为零:cap(foo) == 0

因为lencapappend与 nil 切片一起使用,所以 (1) 通常可以与 (2) 和 (3) 互换使用。

所有的选项在 Go 代码中都是常用的。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信