数组上创建切片
package main
import "fmt"
func main() {
/*
sliece := arr[start:end]
切片中的数据:[start,end]
arr[:end],从头到end
arr[start:]从start到末尾
从已有的数组上,直接创建切片,该切片的底层数组就是当前的数组。
长度是从start到end切割的数据。
但是容量从start到数组的末尾。
*/
a :=[10]int{1,2,3,4,5,6,7,8,9,10}
fmt.Println("_____________1.已有数组直接创建切片__________________")
s1 :=a[:5]
s2 :=a[3:8]
s3 :=a[5:]
s4 :=a[:]
fmt.Println("a:",a)
fmt.Println("s1:",s1)
fmt.Println("s1:",s2)
fmt.Println("s1:",s3)
fmt.Println("s1:",s4)
fmt.Printf("%pn",&a)
fmt.Printf("%pn",s1)
fmt.Println("____________2.长度和容量_____________")
fmt.Printf("s1 len:%d,cap:%dn",len(s1),cap(s1)) //s1 len:5,cap:10
fmt.Printf("s2 len:%d,cap:%dn",len(s2),cap(s2)) //s2 len:5,cap:7
fmt.Printf("s3 len:%d,cap:%dn",len(s3),cap(s3)) //s3 len:5,cap:5
fmt.Printf("s4 len:%d,cap:%dn",len(s4),cap(s4)) //s4 len:10,cap:10
fmt.Println("____________3.更改数组的内容_____________")
a[4] = 100
fmt.Println(a)
fmt.Println(s1)
fmt.Println(s2)
fmt.Println(s3)
fmt.Println(s4)
fmt.Println("____________4.更改切片内容_____________")
s2[2] = 200
fmt.Println(a)
fmt.Println(s1)
fmt.Println(s2)
fmt.Println(s3)
fmt.Println("____________4.更改切片内容_____________")
s1 = append(s1,1,1,1,1)
fmt.Println(a)
fmt.Println(s1)
fmt.Println(s2)
fmt.Println(s3)
fmt.Println("____________5.添加元素切片扩容_____________")
fmt.Println(len(s1),cap(s1))
s1 = append(s1,2,2,2,2,2)
fmt.Println(a)
fmt.Println(s1)
fmt.Println(s2)
fmt.Println(s3)
fmt.Println(len(s1),cap(s1))
fmt.Printf("%pn",s1)
fmt.Printf("%pn",&a)
}
运行输出:
_____________1.已有数组直接创建切片__________________
a: [1 2 3 4 5 6 7 8 9 10]
s1: [1 2 3 4 5]
s1: [4 5 6 7 8]
s1: [6 7 8 9 10]
s1: [1 2 3 4 5 6 7 8 9 10]
0xc00001a280
0xc00001a280
____________2.长度和容量_____________
s1 len:5,cap:10
s2 len:5,cap:7
s3 len:5,cap:5
s4 len:10,cap:10
____________3.更改数组的内容_____________
[1 2 3 4 100 6 7 8 9 10]
[1 2 3 4 100]
[4 100 6 7 8]
[6 7 8 9 10]
[1 2 3 4 100 6 7 8 9 10]
____________4.更改切片内容_____________
[1 2 3 4 100 200 7 8 9 10]
[1 2 3 4 100]
[4 100 200 7 8]
[200 7 8 9 10]
____________4.更改切片内容_____________
[1 2 3 4 100 1 1 1 1 10]
[1 2 3 4 100 1 1 1 1]
[4 100 1 1 1]
[1 1 1 1 10]
____________5.添加元素切片扩容_____________
9 10
[1 2 3 4 100 1 1 1 1 10]
[1 2 3 4 100 1 1 1 1 2 2 2 2 2]
[4 100 1 1 1]
[1 1 1 1 10]
14 20
0xc0000160a0
0xc00001a280
Process finished with exit code 0