Golang 中的 Empty Slice 与 Nil Slice
在本文中,我们将看到声明为空的切片和零切片之间的差异和相似之处。
Golang中的切片用于存储元素序列。切片可以随时扩展,它们的声明方式与数组相同,但没有定义其容量。
无切片
一个nil切片是这样一种切片,在其中声明时,我们只定义名称和数据类型,而不使用内置的make函数。
nil切片是将nil设为零值的切片,切片的长度和容量在开始时也为0,并且它也没有底层数组。
示例1
考虑下面显示的代码。
package main
import (
"fmt"
)
func main() {
var sl []string
fmt.Println(sl)
fmt.Println(len(sl))
fmt.Println(cap(sl))
sl = append(sl, "India", "Japan")
fmt.Println(sl)
fmt.Println(len(sl))
fmt.Println(cap(sl))
}在上面的代码中,我们声明了一个nil切片,然后打印了该切片的长度和容量。
输出结果
如果我们在上面的代码上运行gorunmain.go命令,那么我们将在终端中得到以下输出。
[] 0 0 [India Japan] 2 2
空切片
空切片是使用内置make函数声明的切片,它没有nil作为其零值。
示例2
考虑下面显示的代码。
package main
import (
"fmt"
)
func main() {
sl := make([]string, 0)
fmt.Println(sl)
fmt.Println(sl == nil)
fmt.Println(len(sl))
fmt.Println(cap(sl))
sl = append(sl, "India", "Japan")
fmt.Println(sl)
fmt.Println(len(sl))
fmt.Println(cap(sl))
}输出结果如果我们在上面的代码上运行gorunmain.go命令,那么我们将在终端中得到以下输出。
[] false 0 0 [India Japan] 2 2
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短