切片

 

切片

/*
不定长,但是定类型 就是 切片
*/

 

初始化一个切片

//初始化一个没有元素的整型切片
var a[]int =[]int{}

//make方式创建一个0长度的整型切片
a :=make([]int,0)

 

 

创建和查询切片

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main(){
 6     
 7 
 8     
 9     //创建一个普通切片
10     var x =[10]int{1,2,3,4,5,6,7,8,9,10}
11 
12     //这个是数组的切片 切出来的一部分内容。
13     // 切片的底层是一个数组
14     //切片 是顾头不顾尾
15 
16     //x1 :=x[0:5] //含头不含尾
17     // x2 :=x[:5]  //默认从开头截取
18     //x3 :=x[5:]  //默认截到最后
19     x4 :=x[:]   //从头到尾
20     fmt.Printf("x的类型是%T,数值是%v\n",x,x)  //x的类型是[10]int,数值是[1 2 3 4 5 6 7 8 9 10]
21     fmt.Printf("x4的类型是%T,数值是%v\n",x4,x4) //x4的类型是[]int,数值是[1 2 3 4 5 6 7 8 9 10]
22 
23 
24 
25 
26     //也可以 对切片 进行 截取    切片的切片
27         xx4  := x4[5:7]
28         fmt.Println(xx4)  //[6 7]
29         
30         
31         
32 
33 }

 

切片追加元素

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main(){
 6 
 7     //初始化一个没有元素的整型切片
 8     var a[]int =[]int{}
 9 
10      //查询当前切片的长度
11     fmt.Printf("切片长度是%d,数值是%v\n",len(a),a) //切片长度是0,数值是[]
12 
13 
14 
15 
16     //切片内追加元素
17     a = append(a,0)
18     a = append(a,0,1,2,3,4,5,6)
19     fmt.Printf("切片长度是%d,数值是%v\n",len(a),a) //切片长度是8,数值是[0 0 1 2 3 4 5 6]
20 
21 
22     //遍历查询01
23     for i:=0;i<len(a);i++{
24         fmt.Println(a[i])
25     }
26 
27 
28     //遍历查询02
29     for a,b := range a{
30         fmt.Printf("第%v个长度是%v\n",a,b)
31     }
32 
33 }

 

切片之间的合并

 

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     var (
 7         a1 = []int{1, 2, 3}
 8         b2 = []int{4, 5, 6}
 9     )
10 
11 
12     //兼并切片  利用for 循环进行追加内容
13     for _, values := range b2 {
14         a1 = append(a1, values)
15     }
16     fmt.Println(a1) //[1 2 3 4 5 6]
17 
18 
19 
20     //粗暴方式 另外一种方式
21     a1 = append(a1, b2...)
22     fmt.Println(a1) //[1 2 3 4 5 6]
23 
24     
25 
26 
27 }

 

切片自动扩容的规律

 1 /*
 2 使用make([]int,len)        创建指定初始长度的切片,容量默认为0
 3 使用make([]int,len,cap) 创建指定初始长度和容量的切片
 4 后续的扩容策略依然是: 先翻一倍,在俩个俩个的递增。
 5  */
 6 
 7 
 8 
 9 package main
10 
11 import "fmt"
12 
13 func main() {
14 
15 
16 
17     //make方式, 创建一个0长度的整型切片
18       a :=make([]int,0)
19     a2 :=make([]int,0,5)
20     a3 :=make([]int,3,5)
21 
22     //len是长度,cap 是容量
23     fmt.Printf("切片的长度为%v,容量为%v\n",len(a),cap(a)) //切片的长度为0,容量为0
24     fmt.Printf("切片的长度为%v,容量为%v\n",len(a2),cap(a2)) //切片的长度为0,容量为5
25     fmt.Printf("切片的长度为%v,容量为%v\n",len(a3),cap(a3)) //切片的长度为3,容量为5
26 
27 
28 
29 
30 
31 
32 }

 

 

 

posted @ 2019-11-14 16:41  chaoyangxu  阅读(173)  评论(0编辑  收藏  举报