golang学习之路-19切片slice的使用

package main

import "fmt"
func main() {
   var a = [3]int{1,2,3}
   //var b =  [2]int{1,2}
   //var c[3]int = [3]int{1,2,3}
   //d :=[4]int{1,2,3,4}
   //e :=[6]int{}

   fmt.Println(a,a[0:2])

   //切片从数组或者切片生成新的切片,顾头不顾尾
   //slice[start:end]
   /*
      特性:1、取出元素到数量为 结束到位置-开始到的位置
            2、取出元素不包括结束位置的索引(顾头不顾尾)
            3、取出最后一个的元素使用slice(len(slice))
            4、当缺开始当位置当时候,则表示从开头到结束位置
          5、当没结束位置当话,则表示从开始位置到末尾
          6、两者同时缺省,则与本身相等
            7、两者同为0,则等效于空切片,一般用于切片复位。
   */
   var highRiseBuilding[30]int
   for i:=0;i<30 ;i++  {
      highRiseBuilding[i] = i+1
   }
   //下标10-15
   fmt.Println(highRiseBuilding[10:15])

   //中间到末尾
   fmt.Println(highRiseBuilding[20:])
   //开始到第二个
   fmt.Println(highRiseBuilding[:2])

   g:=[]int{1,2,3}
   fmt.Println(g[:])//全部复制
   fmt.Println(g[0:0])//清空



   //直接声明新的切片
   var na []int//默认nil
   var str []string//默认nil
   //声明空切片
   var numlistEmpty = []int{}
   //输出3个切片
   fmt.Println(str,na,numlistEmpty)
   //输出3个切片大小
   fmt.Println(len(na),len(str),len(numlistEmpty))
   fmt.Println(na==nil)//true
   fmt.Println(str==nil)//true
   fmt.Println(numlistEmpty==nil)//false

   //使用make()函数构造切片(动态构造一个切片)
   //make([]type,size,cap)
   //type类型 size分配元素个数,cap预分配的元素个数

   ac :=make([]int,2)
   ab :=make([]int,2,10)
   fmt.Println(ab,ac)
   fmt.Println(len(ab),len(ac))
   //预分配10个使用2个



}
发布了63 篇原创文章 · 获赞 0 · 访问量 1222

猜你喜欢

转载自blog.csdn.net/qq_37463791/article/details/103429986