Golang 数组
1. 数组的定义和初始化
数组定义语法
var 数组名 [数组长度] 数组类型
定义和初始化数组
代码示例:
package main
import "fmt"
func main() {
// 1. var 定义数组
var arr1 [5]int
fmt.Printf("arr1: %v\n",arr1)
// 2. := 自动推导,定义并初始化
arr2 := [3]int{1,2,3}
fmt.Printf("arr2: %v\n",arr2)
// 3. 省略大小
arr3 := [...]int{2,4,6,8,10,12}
fmt.Printf("arr3: %v\n",arr3)
// 4. 指定索引初始化
arr4 := [5]int{1,2,3}
arr5 := [5]int{3:1, 4:2}
fmt.Printf("arr4: %v\n",arr4)
fmt.Printf("arr5: %v\n",arr5)
// 5. 赋值给别的数组
arr6 := [5]int{2:1, 3:6}
fmt.Printf("arr6: %v\n",arr6)
var arr7 [5]int
// 两个数组的长度和类型必须相同,否则不认为是一个类型无法相互赋值
arr7 = arr6
fmt.Printf("arr7: %v\n",arr7)
}
2. 数组遍历
package main
import "fmt"
func main() {
// 创建数组
array := [5]int{1, 3, 5, 7, 9}
// 1. for
for i:=0; i< len(array);i++ {
fmt.Printf("index: %d, val: %d\n", i, array[i])
}
fmt.Println()
// 2. for range
for index, value := range array {
fmt.Printf("index: %d, val: %d\n", index, value)
}
}
3. 二维数组
package main
import "fmt"
func main() {
// 创建3行两列数组
var array [3][2]int
// 数组赋值
array[0][0] = 00
array[0][1] = 01
array[1][0] = 10
array[1][1] = 11
array[2][0] = 20
array[2][1] = 21
fmt.Println(array)
// 遍历,两个循环遍历
for i := 0; i < 3; i++ {
for j := 0; j < 2; j++ {
fmt.Printf("row: [%d][%d], val: %d\n", i, j, array[i][j])
}
}
fmt.Println("----------优美的分割线----------")
for i, val := range array {
for j, val2 := range val {
fmt.Printf("row: [%d][%d], val: %d\n", i, j, val2)
}
}
}
4. 数组拷贝和传参
package main
import "fmt"
func printArr(arr *[5]int) {
arr[0] = 10
for i, v := range arr {
fmt.Println(i, v)
}
}
func main() {
// 指针传递数组并修改会改变原有数组的值
var arr1 [5]int
printArr(&arr1)
fmt.Println(arr1)
arr2 := [...]int{2, 4, 6, 8, 10}
printArr(&arr2)
fmt.Println(arr2)
}