go语言中的数组和切片有什么不同-创新互联
数组
创新互联建站专注于企业全网营销推广、网站重做改版、陕西网站定制设计、自适应品牌网站建设、HTML5、商城网站制作、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为陕西等各大城市提供网站开发制作服务。是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,
无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数
len(array)获取其长度。
注意:和C中的数组相比,又是有一些不同的
1、Go中的数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份
2、如果Go中的数组作为函数的参数,那么实际传递的参数是一份数组的拷贝,而不是数组的指针。这个和C要区分开。因此,在Go
中如果将数组作为函数的参数传递的话,那效率就肯定没有传递指针高了。
3、array的长度也是Type的一部分,这样就说明[10]int和[20]int是不一样的。
切片
数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型Slices切片(“动态数组"),与
数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。切片中有两个概念:一是len长度,二是cap容
量,长度是指已经被赋过值的大下标+1,可通过内置函数len()获得。容量是指切片目前可容纳的最多元素个数,可通过内置函数
cap()获得。切片是引用类型,因此在当传递切片时将引用同一指针,修改值将会影响其他的对象。
以上就是golang数组和切片的区别是什么的详细内容,更多请关注创新互联其它相关文章!
当前标题:go语言中的数组和切片有什么不同-创新互联
新闻来源:http://ybzwz.com/article/ccecoo.html