速战速决 go - go 容器: 数组(一维数组,多维数组,数组元素的获取和设置,数组的遍历)

速战速决 go https://github.com/webabcd/GoSample
作者 webabcd

速战速决 go - go 容器: 数组(一维数组,多维数组,数组元素的获取和设置,数组的遍历)

示例如下:

container/array.go

// go 容器 - 数组(一维数组,多维数组,数组元素的获取和设置,数组的遍历)

package container

import "fmt"

func ArraySample() {
	// 注:数组的长度是固定的,即使你不显式初始化,它也会用默认值初始化的
	var a [3]int
	fmt.Println(a) // [0 0 0]

	array_sample1()
	array_sample2()
}

// 一维数组
func array_sample1() {
	// 声明一个长度为 5 个元素的整型数组,并初始化
	var a [5]int = [5]int{1, 2, 3, 4, 5}

	// 声明一个长度为 5 个元素的整型数组,并初始化
	// 初始化时可以按位置指定值,未指定值则初始化为默认值
	b := [5]int{0: 1, 3: 4}
	// 通过 [] 获取或设置指定位置的值
	b[len(b)-1] = 5

	// ... 表示数组的长度根据初始化时元素的个数决定(注:如果 ... 也没有,就是 [] 的话那就不是数组而是切片了)
	c := [...]int{1, 2, 3, 4, 5}

	// 如果两个数组的元素个数,元素类型,每个位置的值都相同,则这两个数组是相等的
	d := a == c

	fmt.Println(a, b, c, c[len(c)-1], d) // [1 2 3 4 5] [1 0 0 4 5] [1 2 3 4 5] 5 true

	// 经典的数组遍历的方式
	for i := 0; i < len(a); i++ {
		fmt.Printf("index:%d, value:%d\n", i, a[i])
	}

	// 通过 range 遍历数组(获取索引位置和对应的值)
	for i, v := range a {
		fmt.Printf("%d:%d\n", i, v)
	}

	// 通过 range 遍历数组(仅获取值)
	for _, v := range a {
		fmt.Printf("%d\n", v)
	}
}

// 二维数组
func array_sample2() {
	// 声明一个二维整型数组(2 行 3 列),并初始化
	var a [2][3]int = [2][3]int{{11, 12, 13}, {21, 22, 23}}

	// 声明一个二维整型数组(2 行 3 列),并初始化
	// 初始化时可以按位置指定值,未指定值则初始化为默认值
	b := [2][3]int{1: {21, 22, 23}}

	// ... 表示数组的长度根据初始化时元素的个数决定(对于二维数组来说,只能在第一维使用 ...)
	c := [...][3]int{{1, 1, 1}, {1, 1, 1}}

	// 通过 [] 获取或设置指定位置的值
	c[0] = [...]int{11, 12, 13}
	c[1][0] = 21
	c[1][1] = 22
	c[1][2] = 23

	fmt.Println(a, b, c) // [[11 12 13] [21 22 23]] [[0 0 0] [21 22 23]] [[11 12 13] [21 22 23]]

	// 通过 range 遍历二维数组
	for i, v := range a {
		for i2, v2 := range v {
			fmt.Printf("%d - %d:%d\n", i, i2, v2)
		}
	}
}

速战速决 go https://github.com/webabcd/GoSample
作者 webabcd

posted @ 2022-02-08 14:19  webabcd  阅读(11)  评论(0编辑  收藏  举报