Go 数组
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者
自定义类型。
Go 语言数组声明需要指定元素类型及元素个数,语法格式:
var variable_name [SIZE] variable_type
定义了数组 array_a 长度为 10 类型为 float32:
var array_a [10] float32
初始化数组
数组初始化
//初始化数组中 {} 中的元素个数不能大于 [] 中的数字
var array_a = [5]float32{1.0,2.0,3.0,4.0,5.0}
如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小
var array_a = [...]float32{1.0, 2.0, 3.0, 4.0, 5.0}
访问数组元素
数组元素可以通过索引(位置)来读取。
例如:
package main
import "fmt"
func main() {
//n 是一个长度为10的数组
var n [10]int
var i,j int
//数组n 初始化元素
for i = 0; i < 10;i++{
//设置元素为i + 100
n[i] = i + 100;
}
//输出每个数组元素的值
for j = 0;j<10;j++{
fmt.Printf("元素[%d] = %d\n",j,n[j])
}
}
运行结果:
元素[0] = 100
元素[1] = 101
元素[2] = 102
元素[3] = 103
元素[4] = 104
元素[5] = 105
元素[6] = 106
元素[7] = 107
元素[8] = 108
元素[9] = 109
多维数组
多维数组声明方式:
var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type
var multidimensionalArray [5][10][4]int
二维数组
二维数组是最简单的多维数组,二维数组本质上是由一维数组组成的
二维数组定义方式
var arrayName [ x ][ y ] variable_type
初始化二维数组
多维数组可通过大括号来初始值。
a = [3][4]int{
{0, 1, 2, 3} , /* 第一行索引为 0 */
{4, 5, 6, 7} , /* 第二行索引为 1 */
{8, 9, 10, 11} /* 第三行索引为 2 */
}
访问二维数组
二维数组通过指定坐标来访问。
int val = a[2][2]
访问二维数组val第三行的第三个元素
例如:
package main
import "fmt"
func main() {
var a = [5][2]int{
{0,0},
{1,2},
{2,4},
{3,6},
{4,8},
}
var i ,j int
//输出数组元素
for i= 0 ; i< 5;i++{
for j= 0;j <2 ;j++{
fmt.Printf("a[%d][%d]=%d\n",i,j,a[i][j])
}
}
}
运行效果:
a[0][0]=0
a[0][1]=0
a[1][0]=1
a[1][1]=2
a[2][0]=2
a[2][1]=4
a[3][0]=3
a[3][1]=6
a[4][0]=4
a[4][1]=8
向函数传递数组
1. 形参设定数组大小:
void myFunction(param [10]int)
{
}
2. 形参未设定数组大小
void myFunction(param []int)
{
}
例如:
package main
import "fmt"
func main() {
/* 数组长度为 5 */
var balance = []int {100, 60, 4, 16, 50}
var avg float32
/* 数组作为参数传递给函数 */
avg = getAver( balance, 5 ) ;
/* 输出返回的平均值 */
fmt.Printf( "平均值为: %f ", avg );
}
func getAver(arr []int, size int) float32 {
var i,sum int
var avg float32
for i = 0; i < size;i++ {
sum += arr[i]
}
avg = float32(sum / size)
return avg;
}
运行效果:
平均值为: 46.000000