wangduanduan / wangduanduan.github.io

Wubba Lubba dub-dub
https://wdd.js.org
27 stars 7 forks source link

go语言切片 长度 容量 傻傻分不清楚 #278

Closed wangduanduan closed 5 years ago

wangduanduan commented 5 years ago

容量三问

容量是啥?

要理解切片的容量,必须要深入理解数组。因为切片是数组只上的概念。

那么数组有什么特点?

var a [4]int
func main() {
    var a [4]int
    var b = a
    a[0] = 111
    b[1] = 222
    fmt.Println(a, b)
}
// [111 0 0 0] [0 222 0 0]

A slice is a descriptor of an array segment. It consists of a pointer to the array, the length of the segment, and its capacity (the maximum length of the segment).

切片的定义方式

letters := []string{"a", "b", "c", "d"} // 方式1
func make([]T, len, cap) // 方式2

左边竖框是切片,右边横框是数组。可以把切片理解为一个对象,有三个属性,而不能将切片理解为数组。

slice = {
point: &
len: number
cap: number
}

array = []

Jietu20190430-151510

参考