使用例子
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中
image.png
一下这一张图片出处:go-internals.pdf
image.png
slice:
- 在内存是一片连续的内存空间,如果空间不足,会从新动态分配。
- 切片共享相同的内存空间。
- 访问切片下表不能大于切片长度(len)
函数传值和返回
image.png
(需要了解一点golang汇编知识)图中可以看到sa函数我们传了一个slice参数,在实地中slice传入的是其结构的三个值(array len cap),sr函数中返回值同理