slice:就是變長(zhǎng)數(shù)組,主要是因?yàn)閍rray(數(shù)組)長(zhǎng)度不可變,導(dǎo)致在使用的時(shí)候存在諸多限制,才有了slice;slice 主要包含3個(gè)部分:1、指針 2、容量 3、長(zhǎng)度 ,由于slice 的底層結(jié)構(gòu)依然是數(shù)組,所以操作的時(shí)候,不是操作slice的數(shù)據(jù),而實(shí)際是操作底層數(shù)組的數(shù)據(jù),所以得有指向該數(shù)組的指針,長(zhǎng)度則表示當(dāng)前slice的長(zhǎng)度(非底層數(shù)組的長(zhǎng)度),容量則表示從slice起始位置到底層數(shù)組的結(jié)束位置,注意此處是位置差,即表示能存放多少個(gè)元素。
創(chuàng)新互聯(lián)公司主營(yíng)黃埔網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開發(fā),黃埔h5微信平臺(tái)小程序開發(fā)搭建,黃埔網(wǎng)站營(yíng)銷推廣歡迎黃埔等地區(qū)企業(yè)咨詢slice 的用法和array類似,但申明時(shí),不指定數(shù)組的長(zhǎng)度,如 var s []int,slice 通過len(s),cap(s)查看s的長(zhǎng)度和容量
測(cè)試下:
main main(){ testArray =[]int {,,,,,,,,,} fmt.Println(testArray[:]) fmt.Println(testArray[len(testArray)-]) i,v:=testArray { fmt.Printf(,i,v) } s:=testArray[:] i1,v1:=s{ fmt.Printf(,i1,v1) } fmt.Printf(,cap(s),len(s)) } 測(cè)試結(jié)果為: [0 1 2 3] 9 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 0 3 1 4 2 5 3 6 4 7 the s cap's 7 the s len's 5 slice 倒序: package main import "fmt" func main(){ var testArray [10]int=[10]int {0,1,2,3,4,5,6,7,8,9} fmt.Println(testArray[0:4]) fmt.Println(testArray[len(testArray)-1]) for i,v:=range testArray { fmt.Printf("%d %d\n",i,v) } s:=testArray[3:8] for i1,v1:=range s{ fmt.Printf("%d %d\n",i1,v1) } fmt.Printf("the s cap's %d\nthe s len's %d\n",cap(s),len(s)) // reserse the slice fmt.Println("before reserse ",s) reserse(s) fmt.Println("after reserse",s) } func reserse(s []int){ for i,j:=0,len(s)-1;i<j;i,j = i+1,j-1 { //for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { s[i],s[j]=s[j],s[i] } } 輸出: 。。。 before reserse [3 4 5 6 7] after reserse [7 6 5 4 3]
檢查slice是否為空的兩種方式,直接和nil比較,還有一個(gè)是判斷slice長(zhǎng)度為空
testNil []int testNil==nil { fmt.Println() } len(testNil)=={ fmt.Println() }
文章名稱:golang之slice變長(zhǎng)數(shù)組-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://muchs.cn/article6/phiig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、App開發(fā)、標(biāo)簽優(yōu)化、微信小程序、動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容