不同大小数组为不同类型,不可互相赋值
var a = [2]int {1,2}
var b [3]int
b = a // wrong, a and b are different type
数组传递是值类型,而不是引用。传递数组时会传递一份值得副本,对副本进行改动原数组并不会发生改变
var a = [2]int {1,2}
b := a // copy a and assign to b
b[0] = 3
//此时a = [1,2], b = [3, 2]
多维数组
a := [2][2]int {
{1,2},
{3,4},
} // 最后一个逗号不能少,否则会报错
切片
切片创建
1. var a [5]int = {1,2,3,4,5}
var b []int = a[1:4] // b = [2,3,4]
2. c := []int {6,7,8} // c = [6,7,8]
切片是引用,对切片的任何修改会反映在原数组中
a := [...]int {1,2,3,4,5}
b := a[1:4] // a = [1,2,3,4,5], b = [2,3,4]
b[0] = 10 // a = [1,10,3,4,5], b = [10,3,4], b切片length为3,capacity为4(capacity为原数组起始索引到结束包含的元素个数,不能超过原数组capacity)
make创建切片
make(type, len, cap)