1. 首页 > 人物杂谈

切片是词语吗(切片的定义)

  切片是词语吗(切片的定义)、本站经过数据分析整理出切片是词语吗(切片的定义)相关信息,仅供参考!

   1.切片概念数组的长度在Go语言中是不能改变的,但是在很多应用场景中,数组在初始定义的时候,数组的长度是不可预知的,这样的序列集是不能满足要求的。Go提供了另一种内置的类型切片,弥补了数组的缺陷。从底部开始,切片引用数组中的对象。您可以将元素附加到切片,这可能会增加切片的容量。与数组相比,切片相对自由,因为它不需要设置长度或[]中的值。

   2.使用2.1的切片声明使用make//make()函数创建切片Varslice1=make ([] int,3)slice 1[0]=1 slice 1[1]=2 slice 1[2]=4[/h]传递make关键字[slice 1]Type:% T Value:% v n slice 1)//Output:使用make关键字[slice 1]直接初始化slice 2:=Type:[]int Value:[1 2 4]2.2。使用[slic2]类型进行直接初始化:%T值:% v n # 34,slice2,slice2) /output:使用[slic2]类型:[] int值:[124] 2.3拦截包主导入# 34进行直接初始化;t # 34 funcmain(){//定义一个数组arr:=[.] int {1,2,4,6,8,10,12,14,16 }/从索引0开始。从索引0切到索引4(不含4)[slice3]类型:%T值:% v n # 34,slice3,slice3) //当索引从0开始时,0也可以省略写slice 33:=arr[:4]fmt . printf(# 34;从索引0切到索引4(不含4)[Slice33]类型:%T值:% v n # 34,Slice33,slice 33)/从索引4切到结尾slice 4:=arr[5:]fmt . printf(# 34;从索引5切到最后一个[slice4] type: %T value:% v n # 34,slice4,Slice4)}/**输出从索引0到索引4截断(不含4)[slice 3]type:[]int value:[1 2 4 6]从索引0到索引4截断(不含4)[slice 3]Funmain(){//定义一个slice slice:=[] int {1,2,3,4,5,6 } fmt . printf(# 34;切片-;值:%v长度:%d长度:% dn # 34,slice,len (slice),cap(slice))/删除第一个元素slice=slice[1:]fmt . printf(# 34;删除元素后-gt;值:%v长度:%d长度:% dn # 34,slice,len (slice),cap (slice)}/*输出切片-删除一个元素后:值:[1 2 3 4 5 6]len:6 cap:6-gt;Value:[2 3 4 5 6]len:5 cap:5*/3.2删除最后一个元素包Mainimport # 34;t # 34 func main(){//定义一个切片slice:=[] int {1 1,2,3,4,5,6 } fmt . printf(# 34;切片-;值:%v长度:%d长度:% dn # 34,slice,len (slice),cap(slice)/Delete最后一个元素slice=slice[:len(slice)-1]fmt . printf(# 34;删除元素后-gt;值:%v长度:%d长度:% dn # 34,slice,len (slice),cap (slice)}/*输出切片-删除一个元素后:值:[1 2 3 4 5 6]len:6 cap:6-gt;Value:[1 2 3 4 5]len:5 cap:6*/3.3删除元素包MainImport # 34在指定的位置;t # 34 func main(){//定义一个切片slice:=[] int {1 1,2,3,4 } fmt . printf(# 34;切片-;值:%v长度:%d长度:% dn # 34,slice,len(slice),Cap(slice)index:=2//指定索引的前面:=slice[:index]/指定索引的后面:=slice [index 1:]删除索引% d-gt;值:%v长度:%d长度:% dn # 34,index,slice,len (slice),cap (slice))} 4。Len()和cap () 4.1切片的长度是切片中元素的个数。切片的容量是从切片索引开始的基础数组中的元素数量。切片的长度可以用len()方法得到,容量可以用cap()方法得到。cap()的数组计算结果与len()相同。

   4.2使用包装导入# 34;t # 34 func main(){//Create Slice Slice:=[]int { 1,2,4,6,8,10,12,14,16} fmt.printf (Slice,len:% d cap:% d n # 34;len (slice),cap(Slice))//清空Slice 1Slice 1:=Slice[0:0]FMT。printf ( 39 Slice1,len:% d cap:% d n # 34;len (Slice1),cap(slice 1))/使用make指定创建切片的容量VarSlice2=make ([] int,4,8) slice2 [1]=1slice 2,len:% d cap:% d n # 34;len (slice2),cap(slice 2))//array。计算cap()和len () arr的结果:=[.] int {1,2,4,6,8,10,12,arr数组,len:% d cap:% d n # 34;len (arr),cap (arr)}/* * Output: slice slice,len:9 cap:9slice slice 1,len:0 cap:9 slice slice slice只是对底层数组的引用。对切片所做的任何更改都将反映在基础数组中。是数组值类型,而切片是引用类型。

   5.1函数参数传递包引入# 34;t # 34 func test slice(slice[]int){//Modify slice slice[0]=100 } func main(){//创建切片。切片类型:% t内存地址:%p值:% v n # 34,slice,slice)/调用函数修改测试切片(slice)fmt . printf(# 34;函数被调用后,变量切片类型:% t内存地址:% p值:% v n # 34,slice,slice)} /* *输出变量切片类型:[]int内存地址:0xc00000c080值:[1 2 3 4]函数被调用后,变量切片类型:[]int内存地址:0xc当多个切片共享同一个基数组时,对每个元素所做的更改都会反映在数组中。

  通向# 34;t # 34 func test slice(slice[]int){//Modify slice slice[0]=100 } func main(){//创建切片。切片类型:% t内存地址:%p值:% v n # 34,slice,slice,slice) //到另一个切片slice copy:=slice fmt . printf(# 34;变量sliceCopy的类型:% t内存地址:%p值:% v n # 34,切片复制,切片复制,切片复制)/cutslice 2:=slice[0:2]fmt . printf(# 34;变量Slice2的类型:% t内存地址:%p值:% v n # 34,Slice2,slice 2)/调用函数修改测试切片(slice)fmt . printf(# 34;调用函数后-变量切片类型:% t内存地址:% p值:% v n # 34,切片,切片,切片)fmt。printf(# 34;调用函数变量类型sliceCopy:% t内存地址:%p值:% v n # 34,sliceCopy,sliceCopy,sliceCopy) fmt。printf(# 34;调用函数变量Slice2的类型:% t内存地址:%p值:% v n # 34,Slice2,slice2,Slice2)} 6。Append()和Copy () 6.1函数append():用于向切片添加新元素。Copy():将不会建立源切片和目标切片之间的关系。即两个切片之间没有联系,一个切片的修改不影响另一个切片。6.2使用append()包导入# 34;t # 34 functional slice(slice[]int){//修改切片值slice[0]=100}funcmain(){//定义切片类型。0,4)//to slice slice 1:=append(slice,1)fmt . printf(# 34;变量slice 1-value:% vlength(len):% d capacity(cap):% d address:% p n # 34;Slice1,len (Slice1),cap (Slice1),slice 1)//向Slice2添加多个元素(不超过容量):=append (Slice3)变量slice2-value:% v length(Len):% d capacity(Cap):% d address,slice 2,len (Slice2),cap (Slice2),slice 2)//向slicenewslice:=[] int {1,2,3,变量Slice3-value:% v Len:% d capacity(Cap):% d address:%,slice 3,Len (Slice3printf(# 34;函数被调用后-变量slice 2-值:% vlength (len):% d容量(cap):% d地址:% p n # 34,slice2,len(slice2),cap(slice2),slice2 ) fmt .printf(# 34;调用函数后-变量slice3-值:%v长度(len):%d容量(cap): %d地址:% p n # 34,slice 3,len(slice3),cap(slice3),Slice3 )}/**输出变量slice 1-值:[1]长度(len):1容量(cap): 4地址:0xc00000c080变量slice2-:4地址:0xc 0000 c 00变量slice 3-值:[1 2 3 4 5 6 7]长度(len):7容量:8地址:0xc 00000000当append()用于向片追加元素时,如果容量不足(即(cap-len)==0),Go会创建一个新的内存地址来存储该元素。

   6.3 使用复制()包主导入# 34;fmt # 34func main() { //定义一个slice slice:=[] int {1,2,3,4 }fmt .printf(# 34;可变切片值:%v长度(len):%d容量(上限):%d地址:% p n # 34,slice,len (slice),cap (slice),slice)//定义一个薄片变量来复制slicecopy slice:=make([]int,8) [副本数:% d n # 34,计数)fmt。printf(# 34;变量复制切片值:% v长度(len):% d容量(上限):% d地址:% p n # 34,copyslice,len (copyslice),cap (copyslice),slice)//修改复制的切片,源切片不变复制切片[0]=100fmt .打印。修改后-gt;可变切片值:%v长度(len):%d容量(上限):%d地址:% p n # 34,slice,len(slice),cap(slice),slice)fmtprintf(# 34;修改后-;变量复制切片值:% v长度(len):% d容量(上限):% d地址:% p n # 34,copySlice,len(copySlice),cap(copySlice),Slice) } /* *输出可变切片值:[1 2 3 4]长度(伦):4容量(上限):4地址:0xc00000c080副本数:4 [/]可变切片值:[1 2 3 4]长度(伦):4容量(上限):4地址:0xc00000c080修改后-: CopySlice[自鸣得意]

  更多关于切片是词语吗(切片的定义)的请关注本站。

本文由发布,不代表新营销立场,转载联系作者并注明出处:https://www.newmarketingcn.com/gywm/249161.html

留言与评论(共有 0 条评论)
   
验证码: