golang slice结构

使用例子

package main

func main() {
    a := []int32{3,4}
    sa(a)
    sr()
}

func sa(a []int32)  {
    return
}

func sr() []int32 {
    return []int32{1, 2}
}

内存结构

slice在goalng中的结构定义, 在源码src/runtime/slice.go中


golang slice结构_第1张图片
image.png

一下这一张图片出处:go-internals.pdf


golang slice结构_第2张图片
image.png

slice:

  1. 在内存是一片连续的内存空间,如果空间不足,会从新动态分配。
  2. 切片共享相同的内存空间。
  3. 访问切片下表不能大于切片长度(len)

函数传值和返回

golang slice结构_第3张图片
image.png

(需要了解一点golang汇编知识)图中可以看到sa函数我们传了一个slice参数,在实地中slice传入的是其结构的三个值(array len cap),sr函数中返回值同理

你可能感兴趣的:(golang slice结构)