GO语言基础教程7——数组
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)
。