今天周末,和往常不一样哦
对go数组的感想
它和其它语言的数组有很大差异,差异点:
- 它是值传递(非引用)
- 它的长度不能改变
- 它里面元素只能是同一种类型
在go中相较而言,切片用的更多
1. 数组的初始化方式
// 1. 标准式
var a [5]int
// 2. 赋值方式 ... 代表其中元素个数可以自动推断
b := [...]int{1,2,3}
// 3. 根据索引初始化
c := [5]string{1: "您!", 3: "好啊"} // 1号索引是 您 3号索引是 "好啊"
// 4. 初始化二维数组
d := [3][2]int{} // 初始化3行2列数组
e := [...][2]int{{1,2},{4,5}} // 行数也可以推断
2. 数组的遍历和切片/map 都一样用的也是range
arr7 := [...][2]int{{1, 2}, {4, 8}}
// 二维数组遍历
for index, value := range arr7 {
fmt.Printf("index=%#v; value=%#v\n", index, value)
}
for row, val_arr := range arr7 {
for column, val := range val_arr {
fmt.Printf("(row=%d, column=%d)=%d\n", row, column, val)
}
}
3. 数组的cap 和 len 都是一样
a := [3]int{}
fmt.Println(len(a) == cap(a))
网友评论