zoukankan      html  css  js  c++  java
  • 切片

    切片

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

    初始化一个切片

    //初始化一个没有元素的整型切片
    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
    ",x,x)  //x的类型是[10]int,数值是[1 2 3 4 5 6 7 8 9 10]
    21     fmt.Printf("x4的类型是%T,数值是%v
    ",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
    ",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
    ",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
    ",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
    ",len(a),cap(a)) //切片的长度为0,容量为0
    24     fmt.Printf("切片的长度为%v,容量为%v
    ",len(a2),cap(a2)) //切片的长度为0,容量为5
    25     fmt.Printf("切片的长度为%v,容量为%v
    ",len(a3),cap(a3)) //切片的长度为3,容量为5
    26 
    27 
    28 
    29 
    30 
    31 
    32 }
  • 相关阅读:
    04-JQuery
    03-JavaScript
    02-CSS&JS
    01-HTML
    [LeetCode]Insert Interval
    [shell编程]正则表达式
    [LeetCode]Jump Game II
    [LeetCode]Jump Game
    [LeetCode]Wildcard Matching
    [shell编程]初识sed和gawk
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11858360.html
Copyright © 2011-2022 走看看