九 Go语言之数据格式
前面我们已经学习了一些简单的基本类型,现在学习复合类型,复合类型主要包括了数组,指针,切片等。现在先来学习数组.
一 数组
如果要存储班级里所有学生的数学成绩,应该怎样存储呢?可能有同学说,通过定义变量来存储。但是,问题是班级有80个学生,那么要定义80个变量吗?
像以上情况,最好是通过数组的方式来存储。
所谓的数组:是指一系列同一类型数据的集合。
1.1 数组定义
var a [10]int
数组定义也是通过var 关键字,后面是数组的名字a,长度是10,类型是整型。表示:数组a能够存储10个整型数字。也就是说,数组a的长度是10。
我们可以通过len( )函数测试数组的长度,如下所示:
var a [10]int
fmt.Println(len(a))
当定义完成数组a后,就在内存中开辟了10个连续的存储空间,每个数据都存储在相应的空间内,数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。
注意:数组的长度只能是常量。以下定义是错误的:
var n int = 10
var a [n]int
1.2 数组赋值
数组定义完成后,可以对数组进行赋值操作。
数组是通过下标来进行操作的,下标的范围是从0开始到数组长度减1的位置。
var a[10] int 表示的范围是a[0],a[1],a[2]…,a[9]
完成对数组赋值的第一种方法:
但是这种赋值方式比较麻烦,所以可以使用第二种赋值方式,如下所示:
通过for循环完成数组的赋值与输出。注意:循环的条件,如果将循环条件修改成i<=10是否正确
在上一节中,我们说过可以通过len( )函数来获取 数组的长度,所以也可以对上面的程序,进行如下的修改:
对数组中的数据输出,也可以使用range.如下所示:
i变量存储的是数组的下标,data变量存储的是数组中的值。
如果只想输出数组中的元素值,不希望输出下标,可以使用匿名变量
上面的案例中,首先完成了数组的赋值,然后再输出数组中的值。但是,如果定义完成数组后,没有赋值,直接输出会出现什么样的问题呢?
func main() {var a[10] intfor i :=0;i<len(a);i++{fmt.Println(a[i])}
}
结果
a数组中的元素类型是整型,定义完成后,直接输出,结果全部是0.
当然数组中存储的元素类型也可以是其它类型,如下所示:
var a [10]float64//如果不赋值,直接输出,结果默认全部是0
vara[10]string//如果不赋值,直接输出,结果默认全部是空字符
var a [10]bool//如果不赋值,直接输出,结果默认全部是false.
1.3 数组初始化
上一小节中,首先先定义数组,然后再完成数组的赋值。其实,在定义数组时,也可以完成赋值,这种情况叫做数组的初始化。
具体案例如下:
1.4 数组练习
1.4.1 从一个整数数组中取出最大的整数,最小整数,总和,平均值。
代码如下:
结果
通过观察发现该程序输出的结果没有问题。
但是,现在将程序进行如下修改:将数组中的0元素删除,同时将数组的长度修改为5.
运行以上程序,结果如下:
思考:数组中没有0,为什么输出的结果中最小值为0呢?
现在,在将程序进行如下修改:将数组中的数据全部修改成负数。
运行该程序,结果输出:
思考:数组中没有0,为什么输出的结果中最大值为0呢?
应该怎样解决如上的问题呢?将程序修改如下:
1.4.2 数组里面都是人的名字,分割成:例如:老王|王叔|王哥…
代码如下
结果
现在将最后一个“|”去掉,程序应该怎样进行修改?
具体思路:首先通过循环的方式取出数组中前两个元素,分别链接”|” ,存储到变量str中。然后获取最后一个元素,不需要链接“|”,直接与str链接就可以了。获取names数组中最后一个元素的方式:
通过len(names)计算出数组的长度,然后减去1, 就是数组中最后一个元素的下标(数组的下标是从0开始计算)。所以取出最后一个元素的方式为:names[len(names)-1]
九 Go语言之数据格式相关推荐
- 一文盘点PaddlePaddle官方九大自然语言处理模型
一文盘点PaddlePaddle官方九大自然语言处理模型:百度paddlepaddle模型
- [Java面试九]脚本语言知识总结.
[Java面试九]脚本语言知识总结. 核心内容概述 1.JavaScript加强,涉及到ECMAScript语法.BOM对象.DOM对象以及事件. 2.Ajax传统编程. 3.jQuery框架,九种选 ...
- C语言 JSON数据格式解析
C语言 JSON数据格式解析 一.如何用c语言编写与解析json数据格式,这篇主要是使用一个第三方的json库,本人已经上传至csdn,下载链接在下方. 二.json库代码文件下载地址(json.ra ...
- c语言程序设计 江宝钏 实验九,c语言程序设计,江宝钏著,实验九
c语言程序设计,江宝钏著,实验九 宁波大学实验报告学号 姓名 专业 土木建设类5班 学院 阳明学院 2016年 6月 10 日实验名称:结构体与链表实验目的与要求:1. 掌握结构体类型变量的定义和使用 ...
- c语言程序设计第五版实验报告九,C语言程序设计实验报告-实验九.doc
C语言程序设计实验报告-实验九.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...
- 【C语言进阶深度学习记录】三十九 C语言中的可变参数(参数可变的函数)
用过printf()函数的热都知道,printf的参数可以有多个,它是可变的,根据我们输出参数的类型以及个数的不同来确定参数.今天来学习C语言中参数可变的函数是如何实现的. 文章目录 1 可变参数 2 ...
- 诛天者 pat basic 练习五十九 C语言竞赛
题目: C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集-- ...
- MySQL5.7-第九章语言结构
第九章语言结构 目录 9.1文字值 9.1.1字符串文字 9.1.2数字文字 9.1.3日期和时间文字 9.1.4十六进制文字 9.1.5位值文字 9.1.6布尔文字 9.1.7空值 9.2架构对象名 ...
- c语言程序设计 江宝钏 实验九,c语言程序设计,江宝钏著,实验九.docx
宁波大学实验报告 学号 姓名 专业土木建设类 5 班 学院阳明学院 2016 年 6 月 10日 实验名称:结构体与链表 实验目的与要求: 掌握结构体类型变量的定义和使用. 掌握结构体类型数组的定义和 ...
- 编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出
写在前面 个人认为:是否能熟悉使用Shell(项目流程搭建)+R(数据统计与可视化)+Perl/Python等(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准. 之前分享过 ...
最新文章
- Python如何进行cross validation training
- 利用adb命令查看apk文件包名的一些方法
- OpenCV图像处理使用笔记(一)——使用鼠标选取任何形状的ROI
- xfce4桌面的标题栏都变成了透明的
- 《Servlet学习笔记》Servlet开发细节-线程安全
- keepalived和heartbeat区别
- KGDiscreetAlertView
- 3D点云目标检测算法汇总
- Android-7.0-Nuplayer-启动流程
- Bugku杂项——旋转跳跃
- 如何用 Python 打飞机 ?
- java 将5mb以内图片压缩至200kb以下
- ppurl 下载电子书
- “探月计划”来袭,美国米德天文望远镜助孩子观月赏月
- 【树莓派】登入树莓派
- 2022年G2电站锅炉司炉考试题库及模拟考试
- 数据源SqlDataSource,DetailView,ObjectDataSource控件的配置使用
- 分布式数据库系统之【结构】
- 【PAT甲级A1003 】Emergency (25分)(c++)
- android sqlite fts4,在Sqlite中创建动态FTS4表
热门文章
- vs2015中工具箱不显示DevExpress控件的解决办法
- 如何做蛋白质互作网络图
- java中CheckException和UnCheckException的区别
- XTU 1339 Interprime
- visio中的公式在转换pdf后公式糊掉;word导出pdf时visio丢失模块字体
- 【高等数学】四.多元函数微分学和二重积分
- 【问题笔记】Android Studio运行或打包时报错:Some file crunching failed, see logs for details
- 广告行业中那些趣事系列25:腾讯2020广告大赛冠军解决方案带来的思考
- python 生成word,插入图片如何居中显示
- 解决Office桌面图标异常