02 切片slice

切片的定义

//0.数组的定义
var array = [...]int{1, 2, 3, 5}
fmt.Println(array)
//1.切片的定义,与数组的定义的区别在于 []里面为空,初始时长度为0
var name1 []int
fmt.Printf("%T-长度:%v\n", name1, len(name1))

var name2 = []string{"zhangsan", "lisi", "wangwu"}
fmt.Printf("%T-长度:%v\n", name2, len(name2))

var name3 = []string{1: "zhangsan", 2: "lisi", 5: "wangwu"}
fmt.Printf("%T-%v-长度:%v\n", name3, name3, len(name3))

切片定义是若没初始化,则默认为nil

循环遍历

var strSlice = []string{"php", "python", "java", "golang"}
for i := 0; i < len(strSlice); i++ {
fmt.Printf("%v ", strSlice[i])
}
fmt.Println()
for _, v := range strSlice {
fmt.Printf("%v ", v)
}
fmt.Println()

基于数组定义切片

arr1 := [5]int{55, 65, 57, 58, 59}
arr2 := arr1[:]
fmt.Printf("%v---%T\n", arr2, arr2)

c := arr1[2:4]
fmt.Printf("%v---%T\n", c, c)

切片的长度和容量

容量是指从他的第一个元素开始,到其底层数组元素末尾的个数

fmt.Printf("arr2长度:%v---容量:%v\n", len(arr2), cap(arr2))
//容量可以理解为arr2[1:3]其底层数组是arr2[1:],那容量很明显就是4
fmt.Printf("arr2[1:3]长度:%v---容量:%v\n", len(arr2[1:3]), cap(arr2[1:3]))

添加数据append

arr2 = append(arr2, 58)
fmt.Printf("%v---%T\n", arr2, arr2)

image