Go语言中空切片与空切片的区别
在本文中,我们将了解声明为空切片和空切片的切片之间的区别和相似之处。
Go语言中的切片用于存储一系列元素。切片可以随时扩展,并且它们的声明方式与数组相同,但没有定义其容量。
空切片
空切片是在声明时,我们只定义名称和数据类型,而不使用内置的 **make** 函数的切片。
空切片是指其零值为 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))
}
在上面的代码中,我们声明了一个空切片,然后打印了该切片的长度和容量。
输出
如果我们对上述代码运行命令 **go run main.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))
}
输出
如果我们对上述代码运行命令 **go run main.go**,那么我们将在终端中获得以下输出。
[] false 0 0 [India Japan] 2 2
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP