Go语言数组的使用

Go 语言数组

Go 语言提供了数组类型的数据结构。

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。

相对于去声明number0, number1, ..., and number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展。

数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。

声明数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下

var array_name [SIZE] array_type

以上为一维数组的定义方式。数组长度必须是整数且大于 0。例如以下定义了数组 balance 长度为 10 类型为 float32:

var blance [5] float32

//如果不给初始化的值,默认就用根据数据类型填充数组的元素,float32的默认填充5个大鸭蛋([0 0 0 0 0])

初始化数组

以下演示了数组初始化:

var blance = [5] float32 {1000.0, 2.0, 3.4, 7.0, 50.0}

//给了初始化的值以后,数组中的元素为[1000 2 3.4 7 50]

注意:

  1. 初始化数组中 {} 中的元素个数不能大于 [] 中的数字。
  2. 如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:[...]
package main

import (
    "fmt"
)

func  main()  {
    //会自动计算初始化的值得个数
    var blance = [...] float32 {1000.0, 2.0, 3.4, 7.0, 50.0}
    //len函数是内部函数,会打印初始化数组中的元素个数
    fmt.Println(len(blance))
}

修改数组中第一个索引的值(数组的索引从0开始计算)

blance[1] = 101.21

//数组中的第二个元素就会被重新赋值为101.21,新数组的结果为[1000 101.21 3.4 7 50]

访问数组中的值(不能超出数组的个数,不然会报错)

func  main()  {
    //会自动计算初始化的值得个数
    var blance = [...] float32 {1000.0, 2.0, 3.4, 7.0, 50.0}
    blance[1] = 101.21
    //len函数是内部函数,会打印初始化数组中的元素个数
    fmt.Println(len(blance))
    fmt.Println(blance[4])
    /*超过索引的最大取值了,报错了invalid array index 8 (out of bounds for 5-element array)
    fmt.Println(blance[8])
    */
}

以下演示了数组完整操作(声明、赋值、访问)的实例:

 1 package main
 2
 3 import (
 4     "fmt"
 5 )
 6
 7 func main(){
 8     //创建局部数组变量blance
 9     var blance = [...] string {"a", "b", "c", "d","e","f"}
10     //计算数组的个数
11     count := len(blance)
12     //初始化数组n
13     var n [6] int
14     for i := 0; i < count; i++{
15         //通过for循环,给n的索引赋值
16         n[i] = i + 10
17     }
18
19     //访问新创建的n数组里面的值
20     for index,v := range n{
21         fmt.Printf("n数组中的第 %d 个索引为: %d \n",index,v)
22     }
23 }

以上代码输出的结果为:

n数组中的第 0 个索引为: 10
n数组中的第 1 个索引为: 11
n数组中的第 2 个索引为: 12
n数组中的第 3 个索引为: 13
n数组中的第 4 个索引为: 14
n数组中的第 5 个索引为: 15

Go 语言多维数组

Go 语言支持多维数组,以下为常用的多维数组声明方式:

var array_name [SIZE1][SIZE2]...[SIZEN] array_type

二维数组

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

var arrayName [ x ][ y ] array_type

array_type 为 Go 语言的数据类型,arrayName 为数组名,二维数组可认为是一个表格,x 为行,y 为列,下图演示了一个二维数组 a 为三行四列:

二维数组中的元素可通过 a[ i ][ j ] 来访问。

初始化二位数组:

 func main(){
    //初始化二维数组
    var threedim = [2][5] int {
        {1,2,3,4,5},
        {6,7,8,9,10},
    }
    fmt.Println(threedim)
}

获取第二维数组中第一个元素中的第四个值

func main(){
    //初始化二维数组,索引从0开始,第一个元素索引为0,第一个元素中第三个索引上的值
    var threedim = [2][5] int {
        {1,2,3,4,5},
        {6,7,8,9,10},
    }
    fmt.Println(threedim[0][3])
}

利用循环输出二维数组的对应索引上的值

 1 package main
 2
 3 import (
 4     "fmt"
 5 )
 6
 7 func main(){
 8     //初始化二维数组
 9     var threedim = [3][5] int {
10         {1,2,3,4,5},
11         {6,7,8,9,10},
12         {11,12,13,14,15},
13     }
14     count := len(threedim)
15     for i := 0; i< count ; i++{
16         inner_count := len(threedim[i])
17         for j := 0; j < inner_count; j++{
18             fmt.Printf("threedim [%d][%d] = %d\n", i,j,threedim[i][j])
19         }
20
21     }
22 }

以上代码返回的结果为:

threedim [0][0] = 1
threedim [0][1] = 2
threedim [0][2] = 3
threedim [0][3] = 4
threedim [0][4] = 5
threedim [1][0] = 6
threedim [1][1] = 7
threedim [1][2] = 8
threedim [1][3] = 9
threedim [1][4] = 10
threedim [2][0] = 11
threedim [2][1] = 12
threedim [2][2] = 13
threedim [2][3] = 14
threedim [2][4] = 15
时间: 2024-08-24 02:11:18

Go语言数组的使用的相关文章

1.2 C语言---数组

1.2     C语言---数组 1.2.1    为什么引入数组? 数组就是数组成的一个组,数就是一个特定数据类型的变量,组就是说好多数放在了一起. 1.2.2    怎么定义数组? int a[4];     //定义了一个数组a,里面有4个int元素. 总结:数组中的所有元素必须是同一种数据类型,不可能在一个数组中存储两种数据类型的数. 1.2.3    怎么使用数组? 数组定义的时候作为整体进行定义.但是使用的时候不能作为整体来使用,使用时必须拆开使用数组中的 各个元素. 例如:int

Go语言数组,切片

数组声明 Go 语言数组声明需要指定元素类型及元素个数,语法格式如下: var variable_name [SIZE] variable_type 以上为一维数组的定义方式.数组长度必须是整数且大于 0.例如以下定义了数组 balance 长度为 10 类型为 float32: var balance [10] float32 初始化数组 以下演示了数组初始化: var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 初始化数组中 {} 中的

C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include <stdlib.h> int main() { int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=34, d2=0, d3

车牌识别--模板库C语言数组的制作

在车牌识别中,字符模板匹配的模板库是很大的. 包括 10个阿拉伯数字以及26个英文字母还有几十个汉字,每个库都是一张小图片,加载起来也比较繁琐. 后面还有可能为提高识别增加额外的模板库. 之前的处理中,是把这些库的图片文件放到一个文件夹中,程序启动后,再一个一个读取,这样文件的数量就比较多. 原图片模板如下: 程序稳定后,我们就不要这些字符模板库了,可以用数组的形式代替,就是把这些文件数据保存一个c语言数组里面,直接编译到程序中,运行程序的时候直接使用,不用一个一个加载,再去匹配. 目前使用的m

C语言数组元素下标为何从0开始

很多同学可能在学习数组时会有这个疑问,下标为什么不从1开始呢?从1开始不是更符合大家的日常习惯吗?生活中我们通常说第1个,而不是第0个.的确,有些计算机语言如早期的Pascal语言,数组元素的下标是从1开始的.难道是C语言故意要与众不同?要弄清楚这个问题,得先看一下计算机底层是怎样处理数组元素的.我们先编写了一个小程序,然后在visual studio中对其进行了反汇编.源程序和反汇编后的部分代码如下: 源程序: int arr[5];  //一个全局数组 int main() { int i;

R类型4R 语言数组

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helv

GO语言学习(十四)Go 语言数组

Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0, number1, ..., and number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展. 数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推. 声明数组

c语言 数组类型

数组类型重命名数组类型由元素类型和数组大小共同决定数组指针是一个指针,只想对应类型的数组指针数组是一个数组,其中每个元素都是指针数组指针遵循指针运算法则指针数组拥有c语言数组的各种特性 c通过typedef 为数组类型重命名格式为 typedef type(name)[size] 数组类型:typedef int(aint5)[5] typedef float(afloat10)[10] 数组定义:aint5 iarray; //定义了一个数组afloat10 farray; //定义了一个数组

C语言数组寻址

C语言数组 数组的定义 数组是用来存放数据类型相同且逻辑意义相同的数据 数组的大小 数组的大小不能是变量,必须是常量或者常量表达式,常量表达式由编译器编译时自动求值. 也可以不指定数组大小,但必须对数组进行初始化,编译器在编译时会根据初始化列表中元 素的个数计算数组大小,例如: int nAry[]={1,3,4}; 数组的初始化 在定义数组时可以使用初始化列表进行初始化,例如: int nAry[3]={0,3,3}; 但是只能在定义时使用这种方式赋值,在其他地方只能进行单个元素赋值. 如果数