Go 语方的数组声明方式别具一格,把 [] 看得太重了,看下面的各种声明方式
1 2 3 4 5 6 7 |
var a = [...]int{18, 20} // 这是一个数组,如果省略 ..., 写成 []int{18, 20} 就是一个 slice var b = [5]string{"hello", 3: "ok"} //指定位置初始化 var c = [...]float32{2.0, 2.3} // ... 可省略 var d [20]int // d 的类型是 [20]int var e = new([20]int) // e 的类型是 *[20]int, 这是一个数组指针 var g = [2][2][2]float64 // 多维数组 var h = [...][5]int{{10,20}, {30,40}} // 类似其他语言一样,只有第一维才能用 [...] |
再次强调 Go 的数组是值类型,作为函数参数传递会产生副本。避免传入数组产生副本消耗过多内存,办法是可传数组指针或用切片,切片是第一选择。
数组的大小最大为 2GB,用 ==
或 !=
比较两个数组时它们必须类型和长度一致。 阅读全文 >>