登录/注册

数组

简述

和PHP中各种姿势随便使用的数组不同,Golang中的数组是具有相同唯一类型且元素个数固定的数据项序列

Golang数组:

  1. 数组中元素类型一致
  2. 数据元素可以是任意类型,包括自定义类型
  3. 数组长度固定,索引从0开始

声明数组

var 变量名 [数组长度] 数组元素类型
// 如定义长度为10,元素类型为float32的数组
var test [10] float32

初始化赋值

示例:

// 定义长度为5,元素类型为float32的数组,并赋值
var test = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

// 当省略元素个数,编译器会根据初始化赋值的元素个数计算,下面的语句效果和上面等同
var test = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

// 重新修改数组某个索引对应的值
test[3] = 30.0

访问数组元素

数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。例如:

var salary float32 = balance[9]

以上实例读取了数组balance第10个元素的值。

综合示例

package main

import "fmt"

func main() {
   var n [10]int /* n 是一个长度为 10 的数组 */
   var i,j int

   /* 为数组 n 初始化元素 */        
   for i = 0; i < 10; i++ {
      n[i] = i + 100 /* 设置元素为 i + 100 */
   }

   /* 输出每个数组元素的值 */
   for j = 0; j < 10; j++ {
      fmt.Printf("Element[%d] = %d\n", j, n[j] )
   }
}

实例输出

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

多维数组

Golang支持多维数组,定义方式如下

var 变量名 [首层数组长度][第二层数组长度] 数组元素类型

实例

var threedim [2][3]int

上面的定义类似于下面的PHP数组

[
    [
        0,0,0
    ],
    [
        0,0,0
    ]
]

初始化多维数组

二维数组是最简单的多维数组,二维数组本质上是由一维数组组成的。二维数组定义方式如下:

test := [3][4]int{  
 {0, 1, 2, 3} ,   /*  第一行索引为 0 */
 {4, 5, 6, 7} ,   /*  第二行索引为 1 */
 {8, 9, 10, 11},   /* 第三行索引为 2 */
}

访问二维数组

one := a[2][3]

实例

package main

import "fmt"

func main() {
   /* 数组 - 5 行 2 列*/
   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

向函数传递数组

如果阅读过《Golang函数》,那么应该知道,函数定义时是需要定义参数的数据类型的。

实例如下:

// 当函数参数为数组,可以选择设定或者不设定数组的长度
func getAverage(arr []int, size [3]int) float32
{
    //....
}
本文章由 https://itdashu.com 原创发布,欢迎转载,转载请注明出处。
投稿或联系站长请发送邮件至 leno@itdashu.com。

抢沙发

我们不是孤独的个体,留下足迹,保持联系,成为团体...
姓名
电子邮件
个人主页
Golang教程