数组是编程中非常常用的一种数据结构,Go语言里自然也是支持数组的,本文来初步了解下Go语言里的数组用法!
数组声明
Go语言数组声明需要指定元素类型及元素个数,语法格式如下:
Go
var 变量名 [长度]...[长度] 变量类型
长度要大于0的,下面列出一些数组声明的例子:
Go
package mainimport "fmt"func main() {
//声明长度为10的string型数组
var arr1 [10]string
//声明9*9的二维整型数组
var arr2 [9][9]int
//声明一个结构体类型的数组
var arr3 [8] struct {a, b int; c float32; d byte}
//声明数组给定初始化值
var arr4 = [3]int{3,5,7}
//自动根据元素个数来设定长度的数组
var arr5 = [...]int{3,5,7,9}
fmt.Println(arr1)
fmt.Println(arr2)
fmt.Println(arr3)
fmt.Println(arr4)
fmt.Println(len(arr5))}
运行上面的代码,输出结果为:
Go
[ ][[0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0]][{0 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 0}][3 5 7]4
从运行结果可以看出,声明的数组默认都会被初始化赋值零的,string类型默认就是空字符串,获取数组长度使用len()方法,需要注意的是在Go语言里数组的长度声明后是不可以修改的,初始化值的元素个数不能大于声明的长度。
数组元素访问
go语言里数组的下角标也是从0开始的,元素访问方法请看如下例子:
Go
package mainimport "fmt"func main() { var arr = [...]int{3,5,12,13} //下角标来访问 for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) //修改数组里的元素的值 arr[i] = arr[i] + 100 } //range的方式访问 for _, v := range arr { fmt.Println(v) }}
上面代码运行结果为:
Go
351213103105112113
数组的比较
对于相同长度的数组是可以直接进行比较的,长度不同的话编译会报错!如下例子:
Go
package mainimport "fmt"func main() { var arr1 = [4]int{3,5,12,13} var arr2 = [...]int{3,5,12,13} var arr3 = [4]int{3,5,12,14} fmt.Println(arr1 == arr2, arr1 == arr3)}
以上代码输出结果为:
Go
true false
至于多维数组的元素访问跟一位数组是类似的。
后面我们继续学习数组的切片。