Go 数组

news2024/9/29 11:25:15

一、复合类型:

在这里插入图片描述

二、数组

如果要存储班级里所有学生的数学成绩,应该怎样存储呢?可能有同学说,通过定义变量来存储。但是,问题是班级有80个学生,那么要定义80个变量吗?

像以上情况,最好是通过数组的方式来存储。

所谓的数组:是指一系列同一类型数据的集合。
1. 数组定义

var a [10]int

数组定义也是通过var关键字,后面是数组的名字a,长度是10,类型是整型。表示:数组a能够存储10个整型数字。也就是说,数组a的长度是10。

我们可以通过len()函数测试数组的长度,如下所示:

var a [10]int
fmt.Println(len(a))

输出结果为10。

当定义完成数组a后,就在内存中开辟了10个连续的存储空间,每个数据都存储在相应的空间内,数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。

注意:数组的长度只能是常量。以下定义是错误的:

var n int = 10
var a [n]int

会报错。

2. 数组赋值
数组定义完成后,可以对数组进行赋值操作。数组是通过下标来进行操作的,下标的范围是从0开始到数组长度减1的位置。
在这里插入图片描述
var a[10] int表示的范围是a[0],a[1],a[2]…,a[9]。

2.1 第一种赋值方法:
在这里插入图片描述
2.2 第二种赋值方法
第一种赋值方式比较麻烦,可以使用如下所示:

var a [10]int
for i := 0; i < 10; i++ {
  a[i] = i + 1
}
for i := 0; i < 10; i++ {
  fmt.Println(a[i])
}

第一次循环i等于1,然后赋值给a[i]也就是a[1],然后a[1]也刚好等于1,然后循环十次。

2.3 使用len()函数方式赋值:
对上面的程序,进行如下的修改:

var a [10]int
for i := 0; i < len(a); i++ {
  a[i] = i + 1
}
for i := 0; i < len(a); i++ {
  fmt.Println(a[i])
}

同上一样的道理,虽然改成了len(a)但是其实他的值就是10,而且这样更加方便,你也不用刻意去知道他的长度是多少。

3. 数组数据输出:
可以使用range。如下所示:

for i,data := range a {
  //fmt.Println("下标:",i)
  fmt.Println("元素值:",data)
}

i变量存储的是数组的下标,data变量存储的是数组中的值。

3.1. 输出值,不输出下标:
如果只想输出数组中的元素值,不希望输出下标,可以使用匿名变量:

for _,data := range a {
  //fmt.Println("下标:",i)
  fmt.Println("元素值:",data)
}

上面的案例中,首先完成了数组的赋值,然后再输出数组中的值。但是,如果定义完成数组后,没有赋值,直接输出会出现什么样的问题呢?

var a [10]int
for i := 0; i < len(a); i++ {
  fmt.Println(a[i])
}

a数组中的元素类型是整型,定义完成后,直接输出,结果全部是0。

3.2 不同类型数组的默认值:

var a [10]float64 // 如果不赋值,直接输出,结果默认全部是0
var a [10]string // 如果不赋值,直接输出,结果默认全部是空字符
var a [10]bool // 如果不赋值,直接输出,结果默认全部是false.

4. 数组初始化

之前我们是定义数组,然后再完成数组的赋值。其实,在定义数组时,也可以完成赋值,这种情况叫做数组的初始化。
具体案例如下:

// 数组初始化
// 1.全部初始化
var a [5]int = [5]int{1,2,3,4,5}
fmt.Println(a)
// 在定义好一个数组的同时就给他赋值

// 自动推导
b := [5]int{1,2,3,4,5}
fmt.Println(b)

// 部分初始化
// 没有初始化的部分 默认为0
c := [5]int{1,2,3}
fmt.Println(c)
// 12300
// 指定某个元素初始化

d := [5]int{2:10,4:20}
fmt.Println(d)
// 其中2的值是10,4的值是20,其他的都为0
// ... 通过初始化确定长度
f:=[...]int{1,2,3}
fmt.Println(len(f))
// 3

5.练习:随机数

题目:红球 1-33选择6个且不重复,篮球1-16选择一个可以和红球重复

func main() {
	rand.Seed(time.Now().UnixNano())

	// 随机数
	//红球 1-33选择6个且不重复,篮球1-16选择一个可以和红球重复
	var red [6]int
	for i := 0; i < len(red); i++ {
		v := rand.Intn(33) + 1
		// 内层循环判断红球是否有重复的
		for j := 0; j < i; j++ {
			//数据重复
			if v == red[j] {
				//重新随机
				v = rand.Intn(33) + 1
				j = -1
			}

		}
		red[i] = v
	}
	fmt.Println("红球", red, "篮球", rand.Intn(16)+1)

}

红球 [19 14 29 6 2 1] 篮球 16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攻防世界-command_execution

原题 解题思路 题目告诉了&#xff0c;这可以执行ping命令且没WAF&#xff0c;那就可以在ping命令后连接其他命令。 服务器一般使用Linux&#xff0c;在Linux中可使用“&”连接命令。 ping 127.0.0.1&find / -name "flag*" ping 127.0.0.1&cat /home/f…

Linux中shell脚本常用命令、条件语句与if、case语句

目录 一.shell脚本常用命令 1.1.echo命令 1.2.date命令 1.3.cal命令 1.4.tr命令 1.5.cut命令 1.6.sort命令 1.7.uniq命令 1.8.cat多行重定向 二.条件语句 2.1.条件测试&#xff08;三种测试方法&#xff09; 2.2.正整数值比较 2.3.字符串比较 2.4.逻辑测试 三.i…

深入了解 Java 中 Files 类的常用方法及抽象类的 final 修饰

文章目录 Files 类常用方法抽象类的 final 修饰 &#x1f389;欢迎来到Java学习路线专栏~深入了解 Java 中 Files 类的常用方法及抽象类的 final 修饰 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a…

【C语言学习】二分法查找有序数组中的数

二分查找的基本原理 二分查找的基本逻辑就是每次找区间的中间数&#xff0c;然后与要查找的数进行比较&#xff0c;不断的缩小区间&#xff0c;最后区间中只剩一个数&#xff0c;即为要查找的数。如果不是&#xff0c;则没有该数。 二分查找只适用于有序数组 以数组中的数从左…

计算机视觉领域文献引用

Bag of freebies 炼丹白嫖加油包 Bag of freebies、致力于解决数据集中语义分布可能存在偏差的问题。在处理语义分布偏差问题时&#xff0c;一个非常重要的问题是不同类别之间存在数据不平衡的问题。 一、数据增强篇 Data Augmentation &#xff08;1&#xff09;图片像素调整…

安全模式进不去,解决方法在这!

“我想让电脑进入安全模式&#xff0c;但无论我怎么操作都无法进入。这是怎么回事呢&#xff1f;我怎么才能让电脑进入安全模式呢&#xff1f;请求帮助&#xff01;” 安全模式是Windows操作系统的一种启动选项&#xff0c;用于解决系统问题和故障。然而&#xff0c;有时候用户…

PON测试,“信”助力 | 信而泰测试解决方案浅析

PON介绍 一、什么是PON网络 PON是“Passive Optical Network”的缩写&#xff0c;是一种基于光纤的网络技术。PON网络通过单向的光信号传输来实现数据、语音和视频等信息的传输。PON网络可以支持多个传输速率和距离要求&#xff0c;因此广泛应用于FTTH、FTTB&#xff08;Fibe…

Three.js 实现模型分解,拆解效果

原理&#xff1a;通过修改模型材质的 x,y,z 轴坐标 positon.set( x,y,z) 来实现拆解&#xff0c;分解的效果。 注意&#xff1a;支持模型材质position 修改的材质类型为 type“Mesh” ,其他类型的材质修改了position 可能没有实际效果 在上一篇 Three.js加载外部glb,fbx,gltf…

金融市场中的机器学习;快手推出自研语言模型“快意”

&#x1f989; AI新闻 &#x1f680; OpenAI可能面临《纽约时报》的起诉&#xff0c;侵犯知识产权引发争议 摘要&#xff1a;OpenAI使用《纽约时报》的文章和图片来训练AI模型&#xff0c;违反了《纽约时报》的服务条款&#xff0c;可能面临巨大损失。此前&#xff0c;也有其…

冠达管理:定增获批后会大涨吗?

近年来&#xff0c;跟着我国资本商场的稳步发展&#xff0c;定向增发&#xff08;定增&#xff09;已成为不少上市公司的一种重要融资方法&#xff0c;其比较于揭露发行股票&#xff0c;更能够满足少量出资者的融资需求。然而&#xff0c;对于很多出资者来说&#xff0c;一个问…

游戏服务端性能测试

导语&#xff1a;近期经历了一系列的性能测试&#xff0c;涵盖了Web服务器和游戏服务器的领域。在这篇文章中&#xff0c;我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是&#xff0c;本文着重于记录&#xff0c;而并非深入的编程讨论。在这里&#xff0c;我将与…

Visual Studio 2022 你必须知道的实用调试技巧

目录 1、什么是bug&#xff1f; 2.调试是什么&#xff1f;有多重要&#xff1f; 2.1我们是如何写代码的&#xff1f; 2.2又是如何排查出现的问题的呢&#xff1f; ​编辑 2.3 调试是什么&#xff1f; 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍…

spark第四课

countByValue 数据源中相同的值有多少个,也就是WordCount countByKey 表的是键值对中的key出现了几次,与Value的值无关 不推荐collect,因为他是将数据放入内存,但是内存不够大的话,就容易崩,所以使用saveAsTextFile更好,直接放入磁盘. 保存成对象文件,需要序列化 启动了2个 J…

前端PWA应用的相关知识和基础Demo

一、什么是PWA应用&#xff1f; 1、PWA简介 ​ 渐进式Web应用&#xff08;Progressive Web App&#xff09;&#xff0c;简称PWA&#xff0c;是 Google 在 2015 年提出的一种使用web平台技术构建的应用程序&#xff0c;官方认为其核心在于Reliable&#xff08;可靠的&#xf…

修改窗口类的属性将影响所有该类的窗口

正如标题所指出的&#xff1a;窗口类的属性将影响所有由该窗口类创建的窗口。这就是它为什么称之为窗口类的原因。 我用这么多话来强调这一点&#xff0c;似乎是一件显而易见的事情&#xff0c;但我看到许多”解决方案”忽视了这个简单的事实。 在 WNDCLASS&#xff08;或 WND…

Autoware.universe与Carla(二进制版)联调

文章目录 一、Carla的使用1.1 二进制Carla的安装1.2 Carla API的使用1.2.1 增加行人流和车流1.2.3 改变服务器的时间&#xff0c;光照&#xff0c;天气1.2.3 手动控制车辆1.1.4 车辆的自动驾驶 二、Universe与Carla联调2.1 设置OpenPlanner2.2 重新编译并运行 本文介绍了 Autow…

Nginx反向代理配置流式响应

Nginx 是通过缓存响应内容来处理请求的。也就是说&#xff0c;当 Nginx 接收到完整的响应后&#xff0c;才会将其发送给客户端&#xff0c;所以默认不支持流式响应&#xff0c;这里讲讲 Nginx 反向代理中怎么配置流式响应&#xff1f; 一、使用背景 最近使用 Egg.js 搭建自动化…

冠达管理:非银金融是什么?

非银金融&#xff08;Non-banking Financial Institutions&#xff0c;简称非银&#xff09;是指除了传统的银行以外的其他金融机构。与银行不同的是&#xff0c;非银金融机构没有颁发钱银的权利&#xff0c;但在金融市场中发挥着重要的效果。在全球范围内&#xff0c;非银金融…

每日刷题(翻转+二分+BFS)

食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 ♈️今日夜电波&#xff1a;凄美地—郭顶 1:10 ━━━━━━️&#x1f49f;──────── 4:10 &#x1f504; ◀️ ⏸ ▶️ ☰…

Android 标准语音识别框架:SpeechRecognizer 的封装和调用

前言 此前&#xff0c;笔者梳理了语音相关的两篇文章&#xff1a; 如何打造车载语音交互&#xff1a;Google Voice Interaction 给你答案&#xff1a;介绍的是 3rd Party App 如何通过 Voice Interaction API 快速调用系统的语音交互服务快速完成确认、选择的基础语音对话直面…