Golang 数组和切片的区别
数组
声明一个包含5个元素的整型数组
var array [5]int
声明一个包含5个元素的整型数组,用具体的值初始化每个元素
array := [5]int{10,20,30,40,50}
声明一个整型数组,用具体的值初始化每个元素,容量由初始化值的数量决定
array := [...]int{10,20,30,40,50}
声明一个包含5个元素的整型数组,用具体的值初始化索引为1和2的元素,其余元素保持零值
array := [5]int{1:10,2:20}
声明一个数据,修改索引为2的元素的值
array := [5]int{10,20,30,40,50}
array[2] = 35
切片
创建一个字符串切片,其长度和容量都是5个元素
slice := make([]string 5)
创建一个整型切片,其长度为3个元素,容量为5个元素
slice := make([]int,3,5)
通过切片字面量来声明切片
创建一个字符串切片,其长度和容量都是5个元素
slice := []string{"Red","Blue","Yello","Pink"}
创建一个整型切片,其长度和容量都是3个元素
slice := []int{10,20,30}
创建字符串切片,使用空字符串初始化第100个元素
slice := []string{99:""}
记住,如果在 []
运算符里指定一个值,那么创建的就是数组而不是切片。只有不指定值的时候,才会创建切片。
声明数组和切片的不同
// 创建有3个元素的整型数组
array := [3]int{10,20,30}
// 创建长度和容量都是3的整型切片
slice := []int{10,20,30}
参考
- 《Go语言实战》
A language needs only one conditional control flow construct.
一种语言仅需要一个条件控制流构造。