go语言中给切片重新赋值 golang 切片

go语言中实现切片(slice)的三种方式定义一个切片 , 然后让切片去引用一个已经创建好的数组 。基本语法如下:
索引1:切片引用的起始元素位
索引2:切片只引用该元素位之前的元素
例程如下:
在该方法中,我们未指定容量cap,这里的值为5是系统定义的 。
在方法一中 , 可以用arr数组名来操控数组中的元素,也可以通过slice切片来操控数组中的元素 。切片是直接引用数组,数组是事先存在的,程序员是可见的 。
通过 make 来创建切片 , 基本语法如下:
make函数第三个参数cap即容量是可选的,如果一定要自己注明的话,要注意保证cap≥len 。
用该方法可以 指定切片的大小(len)和容量(cap)
例程如下:
由于未赋值系统默认将元素值置为0,即:
数值类型数组:默认值为 0
字符串数组:默认值为 ""
bool数组:默认值为 false
在方法二中,通过make方式创建的切片对应的数组是由make底层维护,对外不可见,即只能通过slice去访问各个元素 。
定义一个切片,直接就指定具体数组,使用原理类似于make的方式 。
例程如下:
Go 语言copy():切片复制(切片拷贝)2021-10-29
内置函数copu()
作用go语言中给切片重新赋值:可以将一个数组切片复制到另一个数组切片中go语言中给切片重新赋值,如果加入go语言中给切片重新赋值的两个数组切片不一样大go语言中给切片重新赋值,就会按照其中较小的那个数组切片的元素个数进行复制 。
用法:
情况一:将slice1中的前三个元素,复制给slice2
情况二:将slice2中的元素,复制给slice1的前三个
go的数组和切片初始化数组
数组是内置(build-in)类型,是一组同类型数据的集合 。
数组的初始化有多种形式
长度为5的数组,其元素值依次为:1,2,3,4 , 5
长度为5的数组,其元素值依次为:1,2,0,0,0。在初始化时没有指定初值的元素将会赋值为其元素类型int的默认值0,string的默认值是 ""
长度为5的数组,其长度是根据初始化时指定的元素个数决定的
长度为5的数组,key:value,其元素值依次为:0,0 , 1,2,3 。在初始化时指定了2,3,4索引中对应的值:1,2 , 3
长度为5的数组 , 起元素值依次为:0 , 0,1,0 , 3 。由于指定了最大索引4对应的值3,根据初始化的元素个数确定其长度为5
切片
数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型 Slices 切片 。
切片可以通过数组来初始化,也可以通过内置函数make()初始化 。初始化时len=cap,在追加元素时如果容量cap不足时将按len的 2 倍扩容 。
直接初始化切片 ,  [] 表示是切片类型,{1,2,3} 初始化值依次是1,2,3.其cap=len=3
初始化切片s,是数组arr的引用
将arr中从下标startIndex到endIndex-1 下的元素 创建为一个新的切片
缺省endIndex时将表示一直到arr的最后一个元素
缺省startIndex时将表示从arr的第一个元素开始
通过切片s初始化切片s1
通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片
Go切片数组深度解析Go 中的分片数组,实际上有点类似于Java中的ArrayList,是一个可以扩展的数组,但是Go中的切片由比较灵活,它和数组很像,也是基于数组,所以在了解Go切片前我们先了解下数组 。
数组简单描述就由相同类型元素组成的数据结构, 在创建初期就确定了长度,是不可变的 。

推荐阅读