go语言中数组与切片的区别

来源:互联网 发布:上海特效牙膏知乎 编辑:程序博客网 时间:2024/05/29 14:54

一句话总结:切片是动态数组,注意两者初始化和函数参数的区别

1、初始化的区别

数组: a := [...]int{1,2,3}   a := [3]int{1,2,3}

切片: a:= []int{1,2,3}  a := make([]int, 5) a := make([]int, 5, 10)

2、函数传递

数组是值传递,切片是引用传递


package main
import (
"fmt"
)
func changeArray(a [3]int) {
a[0] = 99
}
func changeSlice(s []int) {
s[0] = 99
}
func main() {
a := [...]int{1, 2, 3}
changeArray(a)
fmt.Println(a)
s := make([]int, 5, 10)
changeSlice(s)
fmt.Println(s)
}

[1 2 3]

[99 0 0 0 0]

成功: 进程退出代码 0.






原创粉丝点击