golang复合类型总结_github_zwl的博客-程序员宝宝_golang 联合类型

技术标签: golang  go  

golang复合类型总结
指针类型,数组,切片,map和结构体  

指针:
指针就是地址
var p *int
a=1
p = &a
*p = 999 相当于a=999
指针必须有一个合法的指向才能调用赋值等                      new关键字和make关键字留意一下。new之后不需要释放,自动的gc
值传递和指针传递的区别---值传递是拷贝一份,指针则是指向其内存

数组:(同一个类型的集合)
必须指定长度,并且长度是常量,索引下标为0,循环赋值         rand关键字(取6位的随机数),冒泡排序
数组做参数是值传递,指针类型的数组才是引用传递
优点:
1、按照索引查询元素速度快
2、能存储大量数据
3、按照索引遍历数组方便
缺点:
1、根据内容查找元素速度慢
2、数组的大小一经确定不能改变。
3、数组只能存储一种类型的数据
4、增加、删除元素效率慢
5、未封装任何方法,所有操作都需要用户自己定义。
6、数组的空间必须是连续的,这就造成数组在内存中分配空间时必须找到一块连续的内存空间。

数组缺点:大小固定,做完函数参数会全部拷贝一份
引入切片:
切片:弥补数组缺点—可以认为是一个动态数组(变长)
切片不指定数组前面那个长度  比如 a:=[]int{1,2}.数组指定长度,切片不指定。切片可以自动扩容,2倍的速度扩容
切片可以指定输出
my_array := []int{1,2,3,4,5}
slice := my_array[0:3:5]  //[low:hight:max] len=high - low cap = max-low  取0-3,最多取5个
这里的结果为:slice为1,2,3,len长度为3,cap为5                    留意append关键字
切片得截取
slice := my_array[6:] 
slice := my_array[:3]
slice := my_array[:]
slice := my_array[6]
普通切片不会改变底层数组,指针切片则会改变
同样的切片的值传递和指针的地址传递                                   留意copy关键字

map
Info:=map[键类型]值类型{1:“aa”} 
键是唯一的,函数,切片等不能做键值。容量自动扩充,打印顺序无序
Map做参数是引用传递的

结构体
有type和struct关键字,没有前面的变量的var关键字
将不同类型的数据组合成一个有机的整体
可以顺序初始化也可以指定初始化,顺序初始化需要全部赋值
指定初始化栗子:p2 := Student{name:"aa",addr:"北京"}

可见性需要留意一个首字母大写的问题


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/github_34457546/article/details/105583838

智能推荐

Django学习笔记(3)--模板_weixin_34348805的博客-程序员宝宝

模板在实际的页面大多是带样式的HTML代码,而模板是一种带有特殊语法的html文件,这个html文件可以被django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的html文件,然后发送给客户端。渲染模板:1.render_to_string:找到模板,然后将模板编译后渲染成python的字符串格式,最后再通过HttpResponse类包装成一个HttpResp...

C数学函数,所在函数库为math.h、stdlib.h、string.h、float.h_一介丶草民的博客-程序员宝宝

C数学函数,所在函数库为math.h、stdlib.h、string.h、float.h数学函数,所在函数库为math.h、stdlib.h、string.h、float.hint        abs(int i)                      返回整型参数

疯狂python讲义-第一章+第二章的笔记_自渡2021的博客-程序员宝宝

python语言区分大小写python的复数cmath是复数计算时的函数,sqrt计算平方根。书上的下图1的代码有问题,改为下图2反斜杠\,转义字符。以上两图可见,逗号起到分隔的作用。【我不会解释哈】上图解释“+”加号对字符串的拼接作用函数str()和函数repr()都能将数值转化为字符串。有区别吗?不如repr()好记。...

JAVA 学习-字符串处理_不断奔跑的博客-程序员宝宝

匹配内容较多,写在另一篇博客正则表达式的使用:https://blog.csdn.net/weixin_43732798/article/details/100067094Pattern与Matcher的使用:https://blog.csdn.net/weixin_43732798/article/details/100073668切割String[] split(Strin...

Rockchip RK3588获取芯片的实时温度_loitawu的博客-程序员宝宝

Rockchip RK3588获取芯片的实时温度RK3588的芯片有7路TS-ADC分别对应:芯片中心位置、A76_0/1、A76_2/3、DSU 、A55_0/1/2/3、PD_CENTER、 NPU、GPU。可以通过如下命令获取实时的芯片温度:芯片中心位置温度:soc-thermalrk3588_s:/ # cat /sys/class/thermal/thermal_zone0/temp

mybatis和spring的整合_朱朱朱--的博客-程序员宝宝

版本问题最开始的时候没有spring的mybatis //加载Mybatis配置文件,为了访问数据库 Reader reader = Resources.getResourceAsReader("Mybatis.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //这里的session相当于当时jdbc的connecti

随便推点

蓝桥杯第五届真题:武功秘籍_乔治的哥们的博客-程序员宝宝

点击查看:蓝桥杯历年真题 题解目录武功秘籍答案:7由题意得:1. 偶数页 在正面,奇数页 在反面。2. 92-81+1 = 12 共12页,81单独为1张,92单独为1张,其余10页,2页为一张。3. 10/2+2 = 7张...

github实用的搜索小技巧_Lawrence_121的博客-程序员宝宝

查资源,学习优秀的框架,搜索是一种能力!作为程序猿开发中最大的同性交友网站,github当之无愧,里面有很多优秀的开源框架,各种技术大佬混迹其中,有他们总结的学习教程,造好的轮子(开发的各种工具,技术框架),开源的项目等,我们能够从中借鉴学习,也可以获取灵感,或节省时间,完成任务等等。但是我们要从如此多的内容中找到优秀的和我们需要的,需要我们使用一些搜索技巧,缩小搜索范围,帮助我们更快搜索到相...

【百练】护林员盖房子_coderwait的博客-程序员宝宝_护林员盖房子

护林员盖房子百练2019信科研究生上机测试 A总时间限制:1000ms内存限制:65536kB描述在一片保护林中,护林员想要盖一座房子来居住,但他不能砍伐任何树木。现在请你帮他计算:保护林中所能用来盖房子的矩形空地的最大面积。输入保护林用一个二维矩阵来表示,长宽都不超过20(即<=20)。第一行是两个正整数m,n,表示矩阵有m行n列。然后...

计算机网络学习笔记(四)——差错控制、停等协议、回退N帧、选择性重传、滑动窗口、数据链路层HDLC、PPP协议、有限状态机_Couldhelp的博客-程序员宝宝_停等差错控制

文章目录前言概念一、差错控制1、停等协议2、回退N帧协议(GoBack_N,GB_N)3、选择性重传协议(Selective Repeat,SR)4、单帧确认和累计确认、捎带应答二、链路层流量控制——滑动窗口机制三、数据链路层典型协议1、HDLC协议(High-level Data Link Control)2、PPP协议(Point-to-Point Protocol)四、有限状态机——协议验证参考资料前言笔者系电子科技大学2019级在读本科生,针对本学期学校开设的计算机通信网课程,将学习笔记以博客形

【MoreWindows工作笔记4】 获取文件图标 类型名称 属性 SHGetFileInfo_天龙八部11的博客-程序员宝宝

【MoreWindows工作笔记4】 获取文件图标 类型名称 属性 SHGetFileInfo

2021-06-06 SpringBoot 入门(三)依赖管理特性_阿超努力学习的博客-程序员宝宝

父依赖已经有版本号后面的会自动根据可不写版本号Crtl按住+点击右键进入spring-boot-starter-parent可看到在进入spring-boot-dependencies可发现这里面有很多版本号加入pom你不指定版本号boot会自动进来寻找改变mysql版本的话可以复制 <mysql.version>8.0.21</mysql.version>到父pom进行修改 <mysql.version>5.1.27</mys..