SyMind / learning

路漫漫其修远兮,吾将上下而求索。
9 stars 1 forks source link

Go 语言切片 #47

Open SyMind opened 1 year ago

SyMind commented 1 year ago

Go 语言数组是一个固定长度的、容纳同构类型元素的连续序列,因此 Go 数组类型具有两个属性:元素类型和数组长度。

Go 数组是值语义的。

可以称切片是数组的『描述符』。下面是切片在 Go 运行时中的内部表示:

type slice struct {
    array unsafe.Pointer
    len int
    cap int
}

创建切片实例:

s := make([]byte, 5)

可以通过语法 u[low:high] 创建对已存在数组进行操作的切片,这被称为数组的切片化(slicing):

u := [10]byte{11, 12, 13, 14, 15, 16, 17, 18, 19, 20}
s := u[3:7]

还可以通过语法 s[low:high] 基于已有切片创建新的切片,这被称为切片的 reslicing。