/*
切片并不是数组或者指针,他通过内部指针和相关属性
引用数组片断,以实现变长的方案。
slice并不是真正意义上的动态数组,而是一个引用类型,slice总是指向一个底层数组,slice声明也像数组
一样,只是不需要长度。
*/
package main
import "fmt"
func main() {
//01 切片的定义 从同一个a切取的不同s,s改变a也会改变
a := []int{1, 2, 3, 4, 5}
s := a[0:3:5] //定义 s元素下标为0,1,2 长度为3-0 容量为5-0
fmt.Println("s=", s)
//02 append方法;容量不够用时,一次会增加2
s = append(s, 6) //末尾加一个
fmt.Println("s=", s)
//03切片的创建方法 make,每一次都是创建一个新的切片,之间没有共同元素
s2 := make([]int, 5, 6) //切片类型 长度 容量 值默认为0
s2[0] = 88
fmt.Println("s2=", s2)
s3 := make([]int, 6) // 长度容量都为6
fmt.Println("s3=", s3)
//04切片的获取
/*
s[n] 切片中下标为n项
s[::] 切片中所有的元素
s[low:] 从low开始最后的所有元素
s[:high] 从0到high-1的所有元素 不包含high
s[low:high]从low到high-1的元素,不包含high
s[low:hign:max] 从low到high-1的元素,不包含high;长度high-low 容量max-low
len(s) 长度
cap(s) 容量
*/
//05 copy 的使用 将sreSlice 加入到dstSlice 对应下标覆盖
sreSlice := []int{1, 2}
dstSlice := []int{6, 6, 6, 6, 6} //输出1 2 6 6 6
copy(dstSlice, sreSlice)
fmt.Println("dstSlice=", dstSlice)
//06 切片作为参数传递 引用传递
s6 := []int{1, 2, 3}
fmt.Println("修改前s6=", s6)
update(s6)
fmt.Println("修改后s6=", s6)
}
func update(s []int) {
s[0] = 1111
}
3.9 go 切片
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105306392
今日推荐
周排行