美文网首页
Go语言数组的声明

Go语言数组的声明

作者: 码二哥 | 来源:发表于2020-01-31 08:24 被阅读0次

参考:
http://c.biancheng.net/view/26.html

关键点

  • 数组的长度是固定
  • 元素个数可以是0个或者多个
  • 数组构成三要素
    • 数组变量名
    • 元素个数
    • 元素类型
  • 如何访问数组里的元素呢? 通过下标访问数组里的元素
  • 如何判断两个数组相同类型数组呢?
    • 元素的类型相同
    • 元素的个数相同
  • 数组的长度如何确定?
    • 通过'...',初始化时的元素个数就是数组的长度
    • 直接声明时,设置的,如:var stds [3]string, 3个元素个数
  • 遍历数组方式
    • 通过range
    • 通过下标方式

数组是一个由固定长度特定类型元素组成的序列,

一个数组可以由零个多个元素组成。

因为数组的长度固定的,所以在Go语言中很少直接使用数组。

1、Go语言数组的声明

数组的声明语法如下:

var 数组变量名 [元素数量]Type

语法说明如下所示:

  • 数组变量名:数组声明及使用时的变量名
  • 元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数值。
  • Type:可以是任意基本类型,包括数组本身,类型为数组本身时,可以实现多维数组。

1.1、如何访问数组里的元素

数组的每个元素都可以通过索引下标来访问,索引下标的范围是从 0 开始到数组长度减 1 的位置,内置函数 len() 可以返回数组中元素的个数。

var a [3]int             // 定义三个整数的数组
fmt.Println(a[0])        // 打印第一个元素
fmt.Println(a[len(a)-1]) // 打印最后一个元素
// 打印索引和元素
for i, v := range a {
    fmt.Printf("%d %d\n", i, v)
}
// 仅打印元素
for _, v := range a {
    fmt.Printf("%d\n", v)
}

1.2、数组的默认初始化

默认情况下,数组的每个元素都会被初始化为元素类型对应的零值,对于数字类型来说就是 0,同时也可以使用数组字面值语法,用一组值来初始化数组:

var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
fmt.Println(r[2]) // "0"

1.3、数组的长度 如何设置

在数组的定义中,如果在数组长度的位置出现“...”省略号,则表示数组的长度是根据初始化值个数来计算,因此,上面数组 q 的定义可以简化为:

q := [...]int{1, 2, 3}
fmt.Printf("%T\n", q) // "[3]int"

2、什么条件下数组类型相同?

  • 数组的长度
  • 数组中元素的类型

都相同的情况下,是 两个数组类型相同

2.1、[3]int[4]int是否是同一种数组类型?

数组的长度是数组类型的一个组成部分,因此 [3]int 和 [4]int 是两种不同的数组类型,数组的长度必须是常量表达式,因为数组的长度需要在编译阶段确定。

q := [3]int{1, 2, 3}
q = [4]int{1, 2, 3, 4} // 编译错误:无法将 [4]int 赋给 [3]int

3、比较两个数组是否相等

如果两个数组类型相同的情况下,我们可以直接通过比较运算符(==和 !=)来判断两个数组是否相等

只有当两个数组的所有元素都是相等的时候数组才是相等的,不能比较两个类型不同数组,否则程序将无法完成编译

a := [2]int{1, 2}
b := [...]int{1, 2}
c := [2]int{1, 3}
fmt.Println(a == b, a == c, b == c) // "true false false"
d := [3]int{1, 2}
fmt.Println(a == d) // 编译错误:无法比较 [2]int == [3]int

4、遍历数组——访问每一个数组元素

遍历数组也和遍历切片类似,代码如下所示:

var team [3]string
team[0] = "hammer"
team[1] = "soldier"
team[2] = "mum"
for k, v := range team {
    fmt.Println(k, v)
}

代码输出结果:

0 hammer
1 soldier
2 mum

代码说明如下:

  • 第 6 行,使用 for 循环,遍历 team 数组,遍历出的键 k 为数组的索引,值 v 为数组的每个元素值。
  • 第 7 行,将每个键值打印出来。

相关文章

  • go语言array, slice, map(四)

    array go语言数组,定义方法如下: var arr [n]type 声明方法 go语言也支持多维数组 sli...

  • Go语言学习基础笔记

    Go 1.声明变量 2.Go语言常量 3.运算符 4.for循环 5.Go函数 6.数组声明 7.语言指针 Go ...

  • Go语言数组的声明

    参考:http://c.biancheng.net/view/26.html 关键点 数组的长度是固定的 元素个数...

  • GO语言语法学习进度(5)

    1.GO语言数组 数组的声明: var variable_name [SIZE] variable_type ...

  • GO语言入门第二节 GO语言常用数据结构

    Go 语言常用数据结构 1. 数组和切片 数组数组的声明//声明一个长度是3的数组,初始话为0值var a [3]...

  • Go 语言多维数组

    Go 语言支持多维数组,以下为常用的多维数组声明方式: var variable_name [SIZE1][SIZ...

  • go 语言 数组声明与切片

    声明数组语法 var a = [10]int{} 长度[]+类型+{} 等于 一个数组的声明 ,如果数组里面的值没...

  • Go语言切片

    // //Go语言切片 // /* // go语言切片是对数组的抽象 // Go 数组的长度不可改变,在特定场景中...

  • Go语言第3天 - 常用数据类型

    以下内容部分参考自Go语言基础数据类型Go语言中的数组切片:特立独行的可变数组Go语言数据类型-数组Go标准容器之...

  • Go 切片和数组

    数组 go创建数组和 c 语言类似,有如下两种方式: 切片 切片声明和数组类似,只是没有传递长度 创建二维切片,并...

网友评论

      本文标题:Go语言数组的声明

      本文链接:https://www.haomeiwen.com/subject/sxtgthtx.html