数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

和数组对应的类型是 Slice(切片),Slice 是可以增长和收缩的动态序列,功能也更灵活,但是想要理解 slice 工作原理的话需要先理解数组,所以本节主要为大家讲解数组的使用,至于 Slice(切片)将在《Go语言切片》一节中为大家讲解。

Go语言数组的声明

数组的声明语法如下:

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

语法说明如下所示:

数组变量名:数组声明及使用时的变量名。

元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数值。

Type:可以是任意基本类型,包括数组本身,类型为数组本身时,可以实现多维数组。

数组的每个元素都可以通过索引下标来访问,索引下标的范围是从 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)

}

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

var q [3]int = [3]int{1, 2, 3}

var r [3]int = [3]int{1, 2}

fmt.Println(r[2]) // "0"

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

q := [...]int{1, 2, 3}

fmt.Printf("%T\n", q) // "[3]int"

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

q := [3]int{1, 2, 3}

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

比较两个数组是否相等

如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接通过较运算符(==和!=)来判断两个数组是否相等,只有当两个数组的所有元素都是相等的时候数组才是相等的,不能比较两个类型不同的数组,否则程序将无法完成编译。

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

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

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

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语言查询某个值是否在数组中_Go语言数组详解相关推荐

  1. go语言查询某个值是否在数组中_go语言中的数组

    package main; import ( "fmt" ) func main() { //声明一个数组 var a [3]int; a = [3]int{1, 2, 3}; / ...

  2. JS数组中SORT方法使用详解

    1.sort() 方法用类似Map原地算法对数组的元素进行排序,并返回数组,会改变原数组为排序好的数组(重点:会改变原数组) 2.arr.sort([compareFunction]) ①:该方法传入 ...

  3. JavaScript 数组中的 indexOf 方法详解

    最近项目遇到一个小问题代码我会简化成小例子展示给大家. 用心看到最后会有收获哈,基础扎实的童鞋可以直接跳到数组类型使用. 说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别常用(正则 ...

  4. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

  5. php 打印对象详细信息,php打印显示数组与对象的函数详解

    php打印显示数组与对象的函数详解 发布于 2014-11-17 18:55:49 | 699 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext P ...

  6. 数组,异质结构以及指针的详解

    数组,异质结构以及指针的详解 前言 昨天看了一部韩国电影,老千2,看到凌晨5点,不过发现韩国的棒子们确实养眼,女的贼拉漂亮,还有大尺度哦~ 咱们上一次分析了过程(方法)的实现,其中精妙的栈帧占据了首要 ...

  7. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  8. 求二维数组中最大子数组的和

    任国庆  张博 之前我们讨论了在一维数组中求最大子数组的和,在此基础上我们开始讨论二维数组的最大子数组. 求二维数组的最大子数组思想是建立在以为数组.首先将数组的第一列看成一个一维数组,找到该列的最大 ...

  9. python画二维散点图-基于python 二维数组及画图的实例详解

    1.二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组 import numpy as np list1=[[1.73,1.68,1.71 ...

最新文章

  1. Redhat 中裸设备(raw) 的配置和oracle中使用
  2. CentOS 6.5 手动rpm包安装gcc、g++
  3. 第一期站立会议2(11.16个人)
  4. 窗口不小心拉到任务栏下面,窗口无法拖回桌面的解决办法
  5. Codeforces Round #344 (Div. 2) B. Print Check
  6. 前端暗黑模式,你了解多少
  7. 消息称经销商10月5日将拿到iPhone 12
  8. Golang并发模式--channel高级使用
  9. jenkins ssh 部署 Can't connect to server 错误
  10. stl中stacks的基本用法
  11. 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟
  12. RFID天线接头分类
  13. 一图读懂IP数据包头结构
  14. PDF各种格式相互转换
  15. 【模拟·习题】[USACO18JAN]Lifeguards S
  16. Arduino与Proteus仿真实例-I2C总线多个M24C01设备数据储存仿真
  17. 设计模式(十):模板方法模式
  18. 飞机机身结构主要分三种,现在大部分飞机都用第三种
  19. 关于onload事件
  20. 现场直击CGCA2022中国消费品行业CIO大会

热门文章

  1. TIOBE12月榜单:Java重回第二,Python有望四连冠年度语言
  2. 每日一皮:晕,程序重新请求一下,结果还不一样了!
  3. 2019新面貌:博客改版计划进行中!
  4. 优先级队列(头条面试题)
  5. 分享几个 SpringBoot 实用的小技巧
  6. 八字喜用神php源码,免费查八字喜用神的软件 通关用神
  7. php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法
  8. opencv nms 学习笔记
  9. 大厂常见笔试题 滑动窗口内数的和
  10. freetype 安装