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)
}
posted @ 2020-03-17 11:19  ZhiChao&  阅读(579)  评论(0编辑  收藏  举报