持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
一、切片的使用
方式一:
第一种方式:定义一个切片,然后让切片去引用一个已经创建好的数组,比如前面的案例就是这样的。
方式二:
第二种方式:通过make来创建切片
基本语法:
var 切片名 []type = make([],len,[cap])
参数说明:
type:就是数据类型
len:大小
cap:指定切片容量,可选
func make
func make(Type, size IntegerType) Type
内建函数make分配并初始化一个类型为切片、映射、或通道的对象。其第一个实参为类型,而非值。make的返回类型与其参数相同,而非指向它的指针。其具体结果取决于具体的类型:
- 切片:size指定了其长度。该切片的容量等于其长度。切片支持第二个整数实参可用来指定不同的容量; 它必须不小于其长度,因此 make([]int, 0, 10) 会分配一个长度为0,容量为10的切片。
- 映射:初始分配的创建取决于size,但产生的映射长度为0。size可以省略,这种情况下就会分配一个 小的起始大小。
- 通道:通道的缓存根据指定的缓存容量初始化。若 size为零或被省略,该信道即为无缓存的。
package main
import "fmt"
func main() {
// 演示切片的使用 make , 对于切片,必须 make 使用
var slice []float64 = make([]float64, 5, 10)
slice[1] = 10
slice[3] = 20
fmt.Println(slice)
fmt.Println("slice 的 size = ", len(slice))
fmt.Println("slice 的 cap = ", cap(slice))
}
对上面代码的小结:
- 通过
make方式创建切片可以指定切片的大小和容量。 - 如果没有给切片的各个元素赋值,那么就会使用默认值 【int,float ==> 0、string ==>“”、bool ==> false 】
- 通过
make方式创建的切片对应的数组是由make底层维护,对外不可见,即只能通过slice方式去访问各个元素。
方式三:
定义一个切片,直接指定具体数组,使用原理类似 make的方式。
package main
import "fmt"
func main() {
var slice []string = []string{"tom", "jack", "mary"}
fmt.Println("slice = ", slice)
fmt.Println("slice size = ", len(slice))
fmt.Println("slice cap = ", cap(slice))
}
二、使用切片的区别分析:
方式一和方式二的区别:
- 方式一是直接引用数组,这个数组是事先存在的,程序员是可见的。
- 方式二是通过
make来创建切片,make也会创建一个数组,是由切片在底层进行维护,程序员是看不见的。make方式创建切片的示意图: