切片Slic
/*
切片语法:slice [开始位置 : 结束位置]
语法说明如下:
slice:表示目标切片对象;
开始位置:对应目标切片对象的索引;
结束位置:对应目标切片的结束索引
使用方法:
slice[开始位置:] -->截取开始位置到数组的最后一个元素
slice[:结束位置] -->截取从开始元素到结束位置
slice[开始位置:结束位置] -- >截取从开始位置到结束位置的数组元素
slice[:] --> 生成与原数组一样的切片
slice[0:0] -->生成切片将为空
*/
package main
import "fmt"
//定义数组
var a = [4]int{1, 2, 3, 4}
func main() {
//对数组进行切片
fmt.Println(a[1:4])
}
直接声明新的切片
/*
声明切片:var name []Type
其中 name 表示切片的变量名,Type 表示切片对应的元素类型。
*/
package main
import "fmt"
func main() {
// 声明字符串切片
var strList []string
// 声明整型切片
var numList []int
// 声明一个空切片
var numListEmpty = []int{}
// 输出3个切片
fmt.Println(strList, numList, numListEmpty)
// 输出3个切片大小
fmt.Println(len(strList), len(numList), len(numListEmpty))
// 切片判定空的结果
fmt.Println(strList == nil) //ture
fmt.Println(numList == nil) //ture
fmt.Println(numListEmpty == nil) //false
//numListEmpty 已经被分配到了内存,但没有元素,因此和 nil 比较时是 false
numList = append(numList, 1, 2)//使用append向切片中添加元素
}
使用make()函数构造切片
/*
语法:make( []Type, size, cap )
其中 Type 是指切片的元素类型:
size 指的是为这个类型分配多少个元素
cap 为预分配的元素数量,这个值设定后不影响
size,只是能提前分配空间,降低多次分配空间造成的性能问题
*/
package main
import "fmt"
func main() {
a := make([]int, 2)
b := make([]int, 2, 10)
fmt.Println(a, b) //[0 0] [0 0]
fmt.Println(len(a), len(b)) //2 2
//使用append向切片中添加元素
a = append(a, 1, 2, 3)
fmt.Println(a) //[0 0 1 2 3]
}
append为切片添加元素
package main
import "fmt"
var a []int
func main() {
a = append(a, 1) //在切片末尾添加一个元素
fmt.Println(a) //[1]
a = append(a, 1, 2) //在切片末尾添加两个元素
fmt.Println(a) //[1,1,2]
a = append(a, []int{1, 2, 3}...) //在切片末尾添加一个切片
fmt.Println(a) //[1,1,2,1,2,3]
a = append([]int{0},a...) //在切片开头添加一个元素
fmt.Println(a) //[0,1,1,2,1,2,3]
a = append([]int{-1,-2},a...) //在切片开头添加一个切片
fmt.Println(a) //[-1 -2 0 1 1 2 1 2 3]
}