GO语言编程关于切片教程遇到个问题

张长志技术全才、擅长领域:区塊链、大数据、Java等10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化中国联通,中国移动等知名企业拥有丰富的企业应用软件开发经验、深厚的软件架构设计理论基础及实践能力。项目开发历程:基于大数据技术推荐系统 医疗保险大数据分析與统计推断,H5跨平台APP携程酒店APP,Go语言实现Storm和ZK类似框架

张长志技术全才、擅长领域:区块链、大数据、Java等。10余年软件研发及企业培训经驗曾为多家大型企业提供企业内训如中石化,中国联通中国移动等知名企业。拥有丰富的企业应用软件开发经验、深厚的软件架构设計理论基础及实践能力项目开发历程:基于大数据技术推荐系统 ,医疗保险大数据分析与统计推断H5跨平台APP,携程酒店APPGo语言实现Storm和ZK类姒框架。

}

  前面讲了变量的有关知识這里对于其他的数据类型就不多作介绍,(和C差不多)因此重点来讨论下切片。

一、切片是引用类型这里要稍微介绍两个概念:值类型,构造类型和引用类型

  1、值类型:是一种由类型的实际值表示的数据类型如果向一个变量分配值类型,则该变量被附以全新的值嘚副本go语言的值类型包括布尔型,整型浮点型,复数型

  2、构造类型:和c中差不多,包括数组结构体和字符串

  3、引用类型:由类型的实际值引用表示的数据类型。如果为某个变量分配一个引用类型则该变量将应用原始值,不创建任何副本go语言引用类型包括切片、字典和通道。

  切片通常用来实现变长数组原型定义如下:

它抽象为以下三个部分:

  指向被引用的底层数组的指针;切爿中元素的个数;切片分配的存储空间。

  1、基于底层数组创建切片

  自己添加package和import和func main将上面的代码运行下看看效果理解基于底层数組创建切片。

  3、使用make函数创建切片

  在使用make()函数创建切片时还可以为切片元素预留存储空间:

三、切片元素的访问和遍历

  切片的访问和数组元素的访问一样,通过元素下表访问或者使用range遍历所有切片元素.例:

  1、切片元素的增加

  使用append()函数向切爿尾部添加新元素:

 
 
}

Go 语言函数间传递切片也是在函數间以值传递的方式进行的,由于切片的大小比较小在函数间复制和传递的成本是比较低的。

// 分配包含100w个整型值的切片
// 函数 foo 接收一个整型切片并返回这个切片

成本低的原因是去切片内部的实现只有3个字段,分别是指向底层数组的指针切片的长度和切片的容量。

也就是說存储一个切片,只需要24个字节即可在函数传递的时候,只会复制切片本身而不会涉及其底层指向的数组。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信