版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复合数据类型数组map映射切片01.03.02.目录01数组数组定义数组声明拷贝数组数组元素修改1数组一个由固定长度的特定类型元素组成的序列varvariable_name[size]type数组定义标准格式声明数组vara[3]int //声明一个数组名为a、类型为int、大小为3的数组a[0]=12 //为第一个元素填充数据a[1]=78 //为第二个元素填充数据a[2]=50 //为第三个元素填充数据a:=[3]int{12,78,50} //定义且声明数组内容a:=[3]int{12} //可以只填充部分数据varvariable_name=[size]type{value,……}初始化数组a:=[...]int{12,78,50} //编译器自行推断vara=[3]int{12,78,50} //定义且声明数组内容varvariable_name=[...]type{value,……}自行推断数组大小a:=[3]int{1:78,2:50} //填充指定位置1数组数组的每个元素可以通过索引下标来访问索引下标的范围从0开始到数据长度减1结束数组无法灵活扩容:在定义数组元素数量后,赋值元素变量个数必须要小于或者等于预设置的元素数量type指任意的基本类型,也可以是数组本身,实现多维数组在Go语言中数组是值类型而不是引用类型这意味着当数组变量被赋值时,将会获得原数组的拷贝,新数组中元素的改变不会影响原数组中元素的值数组特点packagemainimport"fmt"funcmain(){a:=[...]int{12,78,50}b:=a //将a数组复制给b数组
b[0]=60fmt.Println(a)fmt.Println(b)}1数组在Go中数组是值类型而不是引用类型。当数组变量被赋值时:将会获得原数组的拷贝。新数组中元素的改变不会影响原数组中元素的值。运行结果为:[127850][607850]packagemainimport"fmt"funcmain(){ vara[1]string//定义一个1个元素的string类型数组,string默认值为空
varb=[2]string{“a”,“b”}//定义一个2个元素的string类型数组
c:=[3]string{"a","b","c"}//定义并初始化一个3个空间的string类型数组
d:=[...]string{"a","b","c","d"}//自动推到元素个数
e:=d//拷贝数组
e[0]="e"//修改数组指定位置的值
fmt.Println(a,len(a))//打印a数组、a数组长度
fmt.Println(b) fmt.Println(c) fmt.Println(d,len(d)) fmt.Println(e,len(e))}1数组运行结果为:[]1[ab][abc][abcd]4[ebcd]402切片切片声明基于数组创建切片使用make()函数构造切片使用append()为切片动态添加元素使用copy()复制新的切片数组与切片相互转换2切片动态数组:切片可以按需自动扩充和缩减数组:长度固定现实中会面临:往数组内增加>len(数组名)个元素varname[]type=[]type{……}切片声明[]中不需要指定长度,即:长度是不固定的可以追加元素,在追加时可能使切片的容量增大,可以从数据中生成新的切片或者是声明新的切片。切片特点packagemainimport"fmt"funcmain(){vara[]int=[]int{10,11,12,13}fmt.Println(a,len(a))}运行结果为:[10111213]42切片varname[]type=数组名[开始位置:结束位置]基于数组创建切片特点结束位置的元素不取切片数量=结束位置下标-开始位置下标当缺省开始位置时,表示从连续的区域开头到结束位置当缺省结束位置时,表示从开始位置到整个连续区域末尾两者同时缺省时,与数组本身等效两者同时为0时,等于空切片,一般用于切片复位packagemainimport"fmt"funcmain(){a:=[5]string{"A","B","C","D"}varb[]string=a[1:2]fmt.Println(a)fmt.Println(b,len(b))}运行结果为:[ABCD][B]1packagemainimport"fmt"funcmain(){a:=[5]int{76,77,78,79,80}varb[]int=a[1:3] //取a数组的第1到第3个元素varc[]int=a[:3] //取a数组的第0到第3个元素vard[]int=a[1:] //取a数组的第1到最后一个元素vare[]int=a[:] //取a数组的第0到最后一个元素varf[]int=a[0:0] //空切片fmt.Println(a,len(a))fmt.Println(b,len(b))fmt.Println(c,len(c))fmt.Println(d,len(d))fmt.Println(e,len(e))fmt.Println(f,len(f))}运行结果为:[7677787980]5[7778]2[767778]3[77787980]4[7677787980]5[]02切片packagemainimport"fmt"funcmain(){a:=[5]string{"A","B","C","D","E"}varb[]string=a[1:3]fmt.Println("修改前的a数组:",a)fmt.Println("修改前的b切片:",b)
b[1]="2"fmt.Println("修改后的a数组:",a)fmt.Println("修改后的b切片:",b)}运行结果为:修改前的a数组:[ABCDE]修改前的b切片:[BC]修改后的a数组:[AB2DE]修改后的b切片:[B2]2切片切片本身不包含任何数据切片仅仅是底层数组的一个上层表示对切片进行的任何修改都将反映在底层数组中2切片packagemainimport("fmt")funcmain(){a:=[...]string{"A","B","C","D","E"}b:=a[1:3]fmt.Printf("数组a长度为:%d\n切片b容量为:%d",len(a),cap(b))}运行结果为:数组a长度为:5切片b容量为:4切片的长度是指切片中元素的个数切片的容量是指从切片的起始元素开始到其底层数组中的最后一个元素的个数切片的长度可以动态的改变(最大为其容量)任何超出最大容量的操作都会发生运行时错误2切片varname[]type=make([]type,size,cap)使用make()函数构造切片特点type指切片元素类型size指的是为这个类型分配多少个元素cap为预分配的元素数量cap设定后不会影响size,只是为了提前分配空间,降低多次分配空间造成的性能问题packagemainimport"fmt"funcmain(){vara[]int=make([]int,5,10)//创建一个切片,初始元素个数为5,并预留10个元素的存储空间a[0]=10a[4]=14fmt.Println(a)}运行结果为:[1000014]2切片append(name,value)append(name,[]type[value,value,value]...)使用append()为切片动态添加元素特点可以为切片追加单个或多个元素;或者是追加切片使用append()函数为切片动态添加元素时,如果空间不足以容纳足够多的元素,切片就会进行“扩容”,此时新切片的长度会发生改变。扩展容量小于1024个元素时按当前切片的容量(Cap)2倍扩容,扩展容量大于1024个元素时按Cap的1/4扩容。2切片packagemainimport"fmt"funcmain(){a:=[]int{10,20,30,40,50}b:=a[1:3]fmt.Println(a)fmt.Println(b)b=append(b,60)fmt.Printf(“第一次追加后,切片a为:%d切片a容量为:%d\n",a,cap(a))fmt.Printf(“第一次追加后,切片b为:%d切片b容量为:%d\n",b,cap(b))b=append(b,70,80,90,100)fmt.Printf(“第二次追加后,切片a为:%d切片a容量为:%d\n",a,cap(a))fmt.Printf(“第二次追加后,切片b为:%d切片b容量为:%d\n",b,cap(b))}运行结果为:[1020304050][2030]第一次追加后,切片a为:[1020306050]切片a容量为:5第一次追加后,切片b为:[203060]切片b容量为:4第二次追加后,切片a为:[1020306050]切片a容量为:5第二次追加后,切片b为:[203060708090100]切片b容量为:82切片copy(destSlice,srcSlice)使用copy()复制新的切片特点destSlice为复制的目标切片srcSlice为数据来源切片目标切片必须分配过空间且足够承载复制的元素个数,并且来源和目标的类型必须一致。copy()函数来源切片和目标切片可以共享同一个底层数组,甚至有重叠也没有问题。packagemainimport"fmt"funcmain(){a:=[]int{0,1,2,3,4,5}b:=[]int{10,11,12}fmt.Println(a)fmt.Println(b)copy(b,a)//只会复制a的前3个元素到b中
fmt.Println(a)fmt.Println(b)}运行结果为:[012345][101112][012345][012]2切片packagemainimport"fmt"funcmain(){//切片转成数组
s:=[]int{10,11,12}vara[3]intfmt.Println(copy(a[:],s))fmt.Println(a)}运行结果为:3[101112]packagemainimport"fmt"funcmain(){//数组转成切片
a:=[...]int{10,11,12}b:=make([]int,3)fmt.Println(copy(b,a[:]))fmt.Println(b)}运行结果为:3[101112]数组与切片相互转换时:需要使用[:]将数组伪装为切片类型后再进行赋值,否则无法通过编译数组与切片中的元素类型必须相同03map映射map定义使用make()函数创建map用切片作为map的值使用delete()函数删除元素3map映射一种无序的key/value的集合;能够通过key值快速检索数据值。map这种数据结构在其他编程语言中也称为字典、映射或哈希表。Golang的map由两种重要的结构构成:hmap和bmap。map定义声明map集合varnamemap[key_type]value_type语法说明如下:(a).name为map变量名;(b).key_type为键类型;(c).value_type为键对应值类型。packagemainimport"fmt"funcmain(){a:=map[int]string{110:"报警电话",120:"急救电话",119:"消防电话"}fmt.Println(a)}运行结果为:map[110:报警电话119:消防电话120:急救电话]3map映射make(map[KeyType]ValueType,[cap])使用make()函数创建map特点map可以在声明的时候填充元素,也可以单独填充元素map中的数据都是成对出现的map类型的变量默认初始值为nil其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。packagemainimport"fmt"funcmain(){a:=make(map[string]int,10)a["报警电话"]=110;a["急救电话"]=120;a["火警电话"]=119;fmt.Println(a)}运行结果为:map[急救电话:120报警电话:110火警电话:119]3map映射运行结果为:[map[A:1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东生态工程职业学院《城市产业经济》2023-2024学年第一学期期末试卷
- 广东青年职业学院《电子线路辅助设计》2023-2024学年第一学期期末试卷
- 七年级上册《4.2.2去括号》课件与作业
- 广东茂名幼儿师范专科学校《哲学研究方法论》2023-2024学年第一学期期末试卷
- 广东茂名农林科技职业学院《田间试验方法与技能田间》2023-2024学年第一学期期末试卷
- 大学生防艾健康教育(中国性学会)学习通测试及答案
- 2021成都市高考英语阅读理解专题选练及答案8
- 【名师一号】2021年新课标版历史必修1-双基限时练4
- 【全程复习方略】2020年北师版数学文(陕西用)课时作业:第二章-第六节幂函数与二次函数
- 【大学课件】节能建筑综述
- “中华老字号”申报书
- 产品质量检测服务行业营销策略方案
- DB11T 214-2016 居住区绿地设计规范
- 互联网新闻信息服务管理规定试题
- GB/T 3487-2024乘用车轮辋规格系列
- GB/T 22517.2-2024体育场地使用要求及检验方法第2部分:游泳场地
- DB2305T 024-2024 关防风栽培技术规程
- 年产500t o-甲基-n-硝基异脲技改项目可研报告
- 光伏项目居间服务合同协议书
- 酒店英语会话(第六版)教案 unit 1 Room Reservations
- 2024至2030年中国蔬菜种植行业市场全景监测及投资策略研究报告
评论
0/150
提交评论