[GO]切片

比如这里要对一个数组进行切片

package main

import "fmt"

func main() {
  

  array := [...]int{10, 20, 30, 0, 0}   //三个点也可以不写
  slice := array[0:3:5]
  fmt.Println("slice = ", slice)
  fmt.Println("len = ", len(slice))
  fmt.Println("cap = ", cap(slice))


}

这里slice将会从array的第0个元素开始取,取到下标为3的元素,整个切片的容量为5-0=5个,长度为3-0=3个

结果为:

slice =  [10 20 30]
len =  3  //这里打印的是长度
cap =  5  //这里打印的是容量

 这里可以看得出来 ,数组与切片最大的区别就是在方括号里有没有固定长度,如果有那么这是一个数组,没有的话那就是一个切片

package main

import "fmt"

func main()  {
    a := [5]int{}      //这种方式最常用,为自动推导类型
    fmt.Printf("a len = %d, cap = %d
 ", len(a), cap(a))

    b := make([]int, 4, 4)  //使用make函数进行切片的创建,make(type, 长度,容量)
    fmt.Printf("b make len = %d, cap = %d
 ", len(b), cap(b))

    c := make([]int, 3)    //使用make函数,如果没有指定容量,那么它的默认值就跟长度相同
    fmt.Printf("c make len = %d, cap = %d
 ", len(c), cap(c))
}

 也有以下的情况:

a := array[:5]  //从下标为0的元素开始取,取到第5个,长度为5,容量也为5
a := array[3:] //从下标为3的元素开始取,取到最后一个,长度与容量相同
原文地址:https://www.cnblogs.com/baylorqu/p/9581708.html