11
2020
04

说说go语言中,数组与切片的区别?

(1). 数组

数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列。

数组的长度是数组类型的一部分,所以[3]int 和 [4]int 是两种不同的数组类型。


  数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 ;


  数组是值传递;


  数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度。


  数组定义:var array [10]int


            var array = [5]int{1,2,3,4,5}


 


(2). 切片

切片表示一个拥有相同类型元素的可变长度的序列。

切片是一种轻量级的数据结构,它有三个属性:指针、长度和容量。


切片不需要指定大小;


切片是地址传递;


切片可以通过数组来初始化,也可以通过内置函数make()初始化 .初始化时len=cap,在追加元素时如果容量cap不足时将按len的2倍扩容;


切片定义:var slice []type = make([]type, len)


 

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。