golang复合类型总结_go 类型 联合-程序员宅基地

技术标签: 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

智能推荐

如何利用GitBash上传本地资源到Gitee\LAB\GItHUB\华为云等(一)_华为云 怎么 bash-程序员宅基地

首先要有华为云账号,自己上官网注册认证即可。华为云官网前提介绍:workplace:工作区(1区),比如自己的IDEAIndex:暂存区(2区),电脑的缓存区Repository:本地仓库(3区),本地电脑创建的文件夹Remote:远程仓库(4区),比如Github,Gitee,Gitlab,华为云这时候有小伙伴会问为什么要用Index,直接提交到仓库不好吗?其实不然,没了Index的话,workplace需要一次一次的向Repository提交自己的文件,很累。比如你去超市买东西,没有I_华为云 怎么 bash

java请假系统毕业设计_jsp企业员工考勤管理系统_咪爷的博客-程序员宅基地

通过员工考勤管理系统这个平台,可以实现员工考勤管理的信息化、网络化、系统化、规范化,使工作人员从繁杂的数据查询和统计中解脱出来,减少工作量。系统的主要功能包括:部门信息管理、员工管理、请假申请、请假审核、员工出勤管理等。分为管理员用户、员工用户、部门经理用户这三种用户平台。本系统前台主要使用JSP作为开发语言,后台使用SqlServer作为数据库管理系统,开发环境是MyEclipse,服务器采用t...

Java设计模式之单例设计模式(三)_在类装载的时候就完成实例化,没有达到lazy loading-程序员宅基地

1.设计模式类型设计模式分为三种类型,共23种(1) 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。(2) 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。(3) 行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。2.单例设计模式单例设计模式: 采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象_在类装载的时候就完成实例化,没有达到lazy loading

日常小结:emoji表情转换utf-8编码字符串(存入数据库)/还原表情字符(页面展示)_emoji表情转字符串-程序员宅基地

直接贴上工具类package com.epean.trade.framework.util;import java.net.URLDecoder;import java.net.URLEncoder;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by ccc on 2019-..._emoji表情转字符串

学习数据结构--第五章:图(图的存储方法)_出边表-程序员宅基地

第五章:图(图的存储及基本操作)1.邻接矩阵法下面时一个无向图的表示,我们使用一个一维数组存放点集,使用一个二维数组存放边集二维数组表示边:行号表示其实端点,列号表示结束端点,值表示该边是否存在,以及该边的权重,我们称这种二维数组表示的矩阵为邻接矩阵邻接矩阵法:结点数位n的图G=(V,E)的邻接矩阵A是n*n的(每个行号表示一个结点每个列号表示一个结点,n个结点即为n*n)将G的顶点编号为 V1,V2,V3…Vn (1,2,3…数组下标)若<Vi,Vj> 存在,则A[i][j]_出边表

关于zookeeper连接失败和dubbo-admin 404问题总结_zookeeper 8080 404-程序员宅基地

zookeeper连接失败centos7安装zookeeper并启动,但是maven项目连接zookeeper却失败。 原因 1 没安装好jdk(jdk无关乎1.7还是1.8,都可以)。 解决办法:下载jdk安装并配置好环境变量。 2 centos7 防火墙没关闭 关闭方法,输入命令 systemctl disable firewalld。 3 centos selinux没有关闭 关闭方法,编辑..._zookeeper 8080 404

随便推点

复杂业务逻辑问题记录_复杂的业务逻辑如何知道接口数据结构-程序员宅基地

复杂业务逻辑在项目中碰到的业务需求,有的确实很合理,但是逻辑上却也十分的复杂.这里记录一下,让我困惑的问题.希望随着技术和经验的增长能够解决下列的问题.随机抽取N个人并且符合条件:示例条件:随机抽取 5 个人这些人需要满足 男女最少各2人 最多各不超过4人专业满足农学至少1人职称为高级工程师至少1人思路数据库中可以通过 IN() OR IN() 来减少数据量后台查询..._复杂的业务逻辑如何知道接口数据结构

倒水问题python实现_python倒水问题-程序员宅基地

问题背景首先给定两个杯子,体积分别问max_X、max_Y。杯子里当前分别有水量x、y。允许的操作有装满一个杯子、倒空一个杯子、将一个杯子中的水倒入另一个杯子。现在想要通过这两个杯子,获取指定体积的水,需要经过哪些操作?比如:两个杯子体积分别为90L和50L,现杯中水量为0L和0L,想要得到60L的水,需要经过哪些操作?算法思路假设当前水杯状态分别为(x,y)。即分别有x升水和y升水。那么只通过一步操作,写出所有可能的下一步水杯状态。def next_step(x, y, max_X, m_python倒水问题

Redis(12)springboot整合redis-程序员宅基地

本文介绍了在Spring Boot中如何整合Redis,包括单节点Redis、哨兵和集群。对于单节点的Redis,只需要添加依赖、配置Redis连接信息、创建RedisTemplate Bean和使用RedisTemplate操作Redis即可。对于哨兵和集群,需要在配置信息中添加哨兵信息或多个Redis节点的信息,并创建对应的配置类。在使用RedisTemplate类时,需要为其设置正确的序列化器。当使用Redis集群时,需要使用集群模式下的RedisTemplate。如果在使用Redis时遇到超时等问题

RCP开发,如何解决org.eclipse.core.runtime.CoreException-程序员宅基地

RCP开发,如何解决 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.我只用了1周学会了RCP,开始开发,比Swing好用多了当我要导出到发布平台上,竟然报错!!SESSION 2007-12-03 11:59:01.796 -------------...

c51用汇编语言产生锯齿波,编写一个汇编程序,用DAC0832芯片实现D/A转换产生 锯齿波...-程序员宅基地

满意答案wj187s2015.05.25采纳率:48%等级:12已帮助:12283人PORT EQU 0CFA0H ;定义DAC接口地址CSEG AT 4000HLJMP STARTCSEG AT 4100HSTART:MOV DPTR,#PORT+1;DAC输出寄存器端口地址送DPTRMOV A,#00H ;给A赋初值LOOP:MOV B,#0FFH ;置计数初值与BLOO..._汇编语言键盘d/a锯齿波

muduo源码解析之TcpConnection-程序员宅基地

在上一篇对Tcpserver的连接事件处理器Acceptor的解析中知道Acceptor为每个连接创建一个TcpConnection结构,通过将这个结构传递给Eventpool实现eventpool和Acceptor的关联。因此TcpConnection是连接后面eventpool的桥梁。本篇将解析TcpConnection类。   首先看一下TcpConnection的类数据成员:

推荐文章

热门文章

相关标签