关于切片与数组的区别,这里给出定义和传值等使用上的区别,最后给出总结
数组定义
- 申明类型定义
1 | var arr [2]byte |
- 直接赋值定义
1 | arr := [2]byte{1,2} |
切片定义
- 申明类型定义
1 | var sli []byte |
- 直接赋值定义
1 | sli := make([]byte, 5) |
作为参数传入
1 | package main |
总结
切片传入时是按照引用传递的,加上指针甚至可以修改引用(内存地址)本身
比如下面的代码会是的传入的引用重新指向nil指针:
1 | func changeSlicePoint(p *[]byte){ |
- 数组的传递是按值传递的,使用了指针可实现传入地址,从而实现对数组的修改