Go语言基础之切片

71 阅读1分钟

Go语言基础之切片

两种声明方法:

// 声明切片类型
  a := [5]int{1, 2, 3, 4, 5}
	var a []string              //声明一个字符串切片
	var b = []int{}             //声明一个整型切片并初始化
	var c = []bool{false, true} //声明一个布尔切片并初始化
	var d = []bool{false, true} //声明一个布尔切片并初始化
// 声明切片类型
   a := make([]int, 2, 10)
   
//快捷方式
    var s []int
    s = append(s, 1, 2, 3)

切片的本质

切片的本质就是对底层数组的封装,它包含了三个信息:底层数组的指针、切片的长度(len)和切片的容量(cap)。

举个例子,现在有一个数组a := [8]int{0, 1, 2, 3, 4, 5, 6, 7},切片s1 := a[:5],相应示意图如下。

image.png

切片s2 := a[3:6],相应示意图如下:

image.png

append()方法为切片添加元素

func main(){
	var s []int
	s = append(s, 1)        // [1]
	s = append(s, 2, 3, 4)  // [1 2 3 4]
	s2 := []int{5, 6, 7}  
	s = append(s, s2...)    // [1 2 3 4 5 6 7]
}

扩容

切片的容量按照1,2,4,8,16这样的规则自动进行扩容,每次扩容后都是扩容前的2倍。

参考:www.liwenzhou.com/posts/Go/sl…