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

智能推荐

windows 搭建 django + apache 环境_coder-HRQ的博客-程序员宝宝

前言:虽然网上有很多教程,但在不同的版本之间还是有些差异的,所以把自己搭建成功的例子记录一下1.各个软件版本:①系统:windows Server 2012 R2 Datacenter64②python3.5.4 32③Django 2.0.8④apache 2.4.35 322.环境搭建:2.1 apache 下载安装:根据自己的需要下载window...

Freemarker配置全局变量_艾比利Kurtz的博客-程序员宝宝_freemarker定义全局变量

1、重写freemarker配置package com.metromania.lute.config;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframewor...

W10系统matlab无法保存对该路径的更改 pathdef_Omni Remover for Mac(系统清理工具)_weixin_39535752的博客-程序员宝宝

Omni Remover Mac版是一款 macOS 上的软件删除卸载工具,除了可以对系统的软件进行清理卸载以外,还特别增强了对 Sketch 和 Xcode 的缓存文件清理,对于平时有用这两款软件的朋友来说,这个可是个非常棒的功能。https://www.macjb.com/mac/7525.htmlOmni Remover for Mac(系统清理工具)​www.macjb.comOmni R...

[Flink基础]---- Flink学习规划(初级)_highfei2011的博客-程序员宝宝

都言:“光说不练假把式”,但个人觉得打牢基础是非常必要的!适当通过 ”理论 + 实践 “ 的结合,可能效果更好!一直唠嗑着要好好学学 Flink,也没有系统地去弄,这次来真的了。Apache Flink 学习目录1、Flink 介绍1.1 关于Apache Flink 1.2Flink 和 Spark 的对比 1.3怎样在Flink社区做贡献 1.4 Flink ...

error LNK2005:class CWinApp already defined _ShenRui的博客-程序员宝宝

作者:ImMcss 欢迎转载,请以超链接形式保留原文地址。 问题:   最近在构筑一个工程,是一个静态Lib,和一个MFC的Dialog工程组成。在生成静态Lib的时候因为不需要使用MFC所以就没有选择MFC,Lib的进展很顺利,很快做成,但在Dialog工程中调用出现如下编译错误, error LNK2005: "class CWinApp * __stdcall AfxGetApp

ISO 11898协议更新说明_meteorite91的博客-程序员宝宝

ISO 11898-1在2015年进行了更新,主要将CAN-FD部分新增,ISO 11898-2在2016年底进行了更新,并且最新版本的11898-2除了对ISO 11898-2:2003进行更新之外,将11898-5:2007和11898-6:2013整合到11898-2:2016之中,原有的11898-5:2007和11898-6:2013作废。

随便推点

什么是大数据时代?_yujianta14的博客-程序员宝宝_大数据时代简介

早在互联网出现之初,我们就知道网络无秘密,在网页上敲击的每一个数据,都将被自动记录。现在,当数据的积累量足够大的时候到来时,量变引起了质变。“大数据”通过对海量数据有针对性的分析,赋予了互联网智商,这使得互联网的作用,从简单的数据交流和信息传递,上升到基于海量数据的分析,一句话“他开始思考了”。这是继云计算、物联网之后IT产业又一次颠覆性的技术变革,对国家治理模式、对企业的决策、组织和业务流程、对

DCPose CVPR2021 充分利用帧间信息的多人姿态估计_xz1203的博客-程序员宝宝_dcpose

最近看到一篇有关人体姿态估计的文章:Deep Dual Consecutive Network for Human Pose Estimation,是cvpr2021上的,在github上有代码实现。链接:https://github.com/Pose-Group/DCPose如下图所示,看起来效果还不错。从git上下下来后,要配置环境:首先创建conda虚拟环境并激活,一定是3.6的,我尝试过python3.7的,后面在安装模块的时候失败conda create -n DCPose

Docker容器基本部署安装与基本命令_ㅤChen的博客-程序员宝宝_加载yum源的指令

Docker容器前言:Docker基本概念Docker概述Docker 平台Docker引擎Docker应用Docker 架构Docker 基础安装部署常用命令前言:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口Docker基本概念Docker概述Docker是一个用于开发,交付和运行应用程序的开放平台,Docker可以将

Discriminative Adversarial Domain Adaptation读书笔记_lwpyh的博客-程序员宝宝

这篇文章是AAAI2020的一篇领域自适应的文章,挺有意思的,把读书笔记和大家分享一下。摘要:给定源域上标记的实例和目标域上未标记的实例,无监督域适应旨在学习一种任务分类器,它可以很好地对目标进行分类。最近的进展依赖于深度网络的领域对抗训练来学习领域不变特征。但是,由于任务分类器和域分类器的分离设计会导致模式崩溃,这些方法在对齐域间特征和类别的联合分布方面受到限制。为了克服这一问题,本文提出了一种新的对抗学习方法,称为可鉴别的对抗域适应(DADA)。基于集成的分类器和域分类器,DADA有一个新颖的对抗性

win10管理员权限怎么获得_你不知道的在Windows10上以管理员身份运行程序的方法,共七种..._weixin_39562606的博客-程序员宝宝

在Windows 10上,“以管理员身份运行”程序是每个用户都应了解的一项基本技能。应用程序在用户模式下运行,可以防止潜在的有害程序更改系统,这对系统安全非常重要。但是,有时,某些受信任的程序可能需要提升的权限才能工作,所以了解使用适当的权限运行程序将非常有用。Windows 10都提供了几种方法,可以使用“开始”菜单,“文件资源管理器”,“命令提示符”等来使用提升的特权快速启动应用程序。本文目录...

Cesium 视角锁定、解除锁定_vde_chengyaojin的博客-程序员宝宝_cesium 锁定视角

Cesium相机视角锁定有两种方法1、锁定到entity对象上,当需要取消锁定时,我们可以直接设置viewer.trackedEntity =undefined;即可取消视角锁定。2、使用viewer.camera.lookA 视角也会锁定到设定参数。取消锁定的时候,可以设置viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)...