GO语言基础教程7——数组

174 阅读2分钟

GO语言基础教程7——数组

数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:

// 定义一个长度为3元素类型为int的数组a
var a [3]int

数组定义

var 数组变量名 [元素数量]数据类型

注意:数组的长度必须为常量,且长度为数据类型的一部分。

举个例子:

var a [3]int
var b [4]int
a = b 
//不可以这样做,因为此时a和b是不同的类型
/a的数据类型为[3]int,b的数据类型为[4]int,因此不能直接操作

数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1

数组的初始化

数组的初始化也有很多方式。

方法一

确定长度时对数组初始化。

func main() {
    var arr = [3]int
    var arr1 = [2]string{"likuis","ok"}
    fmt.println(arr) // 0 0 0
    fmt.println(arr1) // likuis ok
}

方法二

编译器自动识别长度对数组初始化。

func main() {
    var arr = [...]int
    var arr1 = [...]string{"likuis","ok"}
    fmt.println(arr) // 空
    fmt.println(arr1) // likuis ok
}

方法三

可以通过索引值来对数组初始化。

func main() {
    var arr = [...]int{1:1,3:3}
    fmt.println(arr) // 0 1 0 3
}

数组遍历

遍历数组a有以下两种方法:

func main() {
	var a = [...]string{"likuis", "good", "ok"}
	// 方法1:for循环遍历
	for i := 0; i < len(a); i++ {
		fmt.Println(i,a[i])
	}

	// 方法2:for range遍历
	for index, value := range a {
		fmt.Println(index, value)
	}
        //输出:
        //1 likuis
        //2 good
        //3 ok
}

多维数组

Go语言是支持多维数组的,以二维数组为例(数组中又嵌套数组)。

二维数组定义

func main() {
	a := [3][2]string{
		{"likuis", "good"},
		{"tom", "good"},
		{"yomi", "bad"},
	}
	fmt.Println(a) //[[likuis good] [tom good] [yomo bad]]
	fmt.Println(a[2][1]) //支持索引取值:yomi
}

二维数组遍历

func main() {
	a := [3][2]string{
		{"likuis", "good"},
		{"tom", "good"},
		{"yomi", "bad"},
	}
	for _,value := range a {
            for _,value1 := range value {
                fmt.print(value1)
            }
            fmt.println()
        }
}
//输出:
//likuis good
//tom good
//yomi bad

注意:多维数组只有第一层可以使用...来让编译器推导长度。

例如:

//支持的写法
a := [...][2]string{
	{"likuis", "good"},
        {"tom", "good"},
	{"yomi", "bad"},
}
//不支持多维数组的内层使用...
b := [3][...]string{
	{"likuis", "good"},
        {"tom", "good"},
	{"yomi", "bad"},
}

课后练习

1、求数组[1, 3, 5, 7, 8]所有元素的和 2、找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)(1,2)

(点击进入专栏查看详细教程)