go语言的数组和切片区别
这里不介绍数组和切片的使用技巧,主要看下2者的区别。
首先看下它们的定义:
- 数组:类型 [n]T表示拥有n个T类型的值的数组。
- 切片:类型 []T表示一个元素类型为T的切片。
看一个数组的例子:
var x[3]int = [3]int{1,2,3}
var y[3]int = x
fmt.Println(x,y)
y[0]=999
fmt.Println(x,y) 
输出结果如下,可以发现y的内容变了,但是X没有变
[1 2 3] [1 2 3]
[1 2 3] [999 2 3]
对上述代码稍加变动,看一个切片的例子:
var x[]int = []int{1,2,3}
var y[]int = x
fmt.Println(x,y)
y[0]=999
fmt.Println(x,y)  
输出结果如下,可见x和y的内容都变了
[1 2 3] [1 2 3]
[999 2 3] [999 2 3]
另有如下初始化、赋值方式都是语法错误的
var x[3]int = []int{1,2,3}
-----------------------------
var x[]int = [3]int{1,2,3}
-----------------------------
var x[]int = []int{1,2,3}
var y[3]int = x
-----------------------------
var x[3]int = [3]int{1,2,3}
var y[]int = x
可以得出结论:如官方文档所述,数组是需要指定个数的,而切片则不需要。数组赋值也可是使用如下方式,忽略元素个数,使用“...”代替
x:= [...]int{1,2,3}
y := x
fmt.Println(x,y)
y[0]=999
fmt.Println(x,y)
go语言的数组和切片区别的更多相关文章
- Go语言入门——数组、切片和映射(下)
		上篇主要介绍了Go语言里面常见的复合数据类型的声明和初始化. 这篇主要针对数组.切片和映射这些复合数据类型从其他几个方面介绍比较下. 1.遍历 不管是数组.切片还是映射结构,都是一种集合类型,要从这些 ... 
- Go语言入门——数组、切片和映射
		按照以往开一些专题的风格,第一篇一般都是“从HelloWorld开始” 但是对于Go,思来想去,感觉真的从“HelloWorld”说起,压根撑不住一篇的篇幅,因为Go的HelloWorld太简单了. ... 
- [Go] gocron源码阅读-go语言中数组和切片的字面值初始化语法
		源码中有这么一句,这个函数要求返回的是[]cli.Command,cli.Command类型的切片,这个地方直接使用字面值初始化了一个切片返回去了 return []cli.Command{comma ... 
- Go语言之数组与切片基础
		一.数组 数组是同一类型元素的集合,可以放多个值,但是类型一致,内存中连续存储 Go 语言中不允许混合不同类型的元素,而且数组的大小,在定义阶段就确定了,不能更改 1.数组的定义 // 定义一个大小为 ... 
- GO语言总结(3)——数组和切片
		上篇博文简单介绍了一下Go语言的基本类型——GO语言总结(2)——基本类型,本篇博文开始介绍Go语言的数组和切片. 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. ( ... 
- go语言教程之浅谈数组和切片的异同
		Hello ,各位小伙伴大家好,我是小栈君,上次分享我们讲到了Go语言关于项目工程结构的管理,本期的分享我们来讲解一下关于go语言的数组和切片的概念.用法和区别. 在go语言的程序开发过程中,我们避免 ... 
- Go数组和切片定义和初始化
		1 前言 切片是动态数组,数组数组是按值赋值,切片是按地址赋值(引用) 2 代码 2.1 数组初始化 func basic_array(){ //var arr2 = [3]int{2,4,6} // ... 
- GO语言数组和切片实例详解
		本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ... 
- Go语言数组和切片的原理
		目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ... 
随机推荐
- NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)
			摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P4 CIPS2016 中文信息处理报告下载链接:http://cips-upload.bj.bce ... 
- R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)
			每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 由于业务中接触的数据量很大,于是不得不转战开始 ... 
- Android Gradle项目Hotfix热修复技术的接入
			https://github.com/AItsuki/HotFix Issues MAC系统无法自动打包补丁,原因可能是路径分隔符问题 使用谷歌multidex分包后无法注入代码(开启multidex ... 
- Java中用正则表达式判断日期格式是否正确
			1.Java中用正则表达式判断日期格式是否正确 DateType.java: /** * @Title:DateType.java * @Package:com.you.dao * @Descript ... 
- Count:2org.apache.batik.transcoder.TranscoderException: null
			1.错误描述 Count:2org.apache.batik.transcoder.TranscoderException: null Enclosed Exception: The current ... 
- Linux显示USB设备
			Linux显示USB设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lsusb -tv /: Bus 08.Port 1: Dev 1, Class=ro ... 
- C#读取Excel表格中数据并返回datatable
			在软件开发的过程中,经常用到从excel表格中读取数据作为数据源,以下整理了一个有效的读取excel表格的方法. DataTable GetDataTable(string tableName,str ... 
- 通过ApplicationContext.getBean(beanName)动态加载数据。
			一,前台数据 $.ajax({ url: '/intra/coe/order/ploadTable.htm', type: 'POST', dataType: 'json', data: {keyId ... 
- DBdbvis数据库驱动连接问题
			今天使用数据库查询工具DBvis链接mysql数据库时, 发现执行如何sql语句, 都报如下错误: mysql驱动包的版本不对导致的.我的mysql版本是5.7 解决办法: 去mysql官网下载最新的 ... 
- 在.NET Core中处理一个接口多个不同实现的依赖注入问题
			前言 近段时间在准备公司的技术分享,所以这段时间将大部分时间放在准备分享内容上去了.博客也就停了一下下. 在.NET Core中处理依赖注入问题时,往往是定义好了一个操作规范的接口,会有N多个基于不同 ... 
