真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang碎片整理之?dāng)?shù)組與切片

**數(shù)組 Array**

創(chuàng)新互聯(lián)專注于羅甸企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城開(kāi)發(fā)。羅甸網(wǎng)站建設(shè)公司,為羅甸等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

數(shù)組是一種內(nèi)建的類型,是一組同類型數(shù)據(jù)的集合,是一種值類型,可以通過(guò)從0開(kāi)始的下標(biāo)索引訪問(wèn)元素值,在初始化后其長(zhǎng)度就固定了,無(wú)法修改其長(zhǎng)度,而且Array的長(zhǎng)度也是其類型的一部分,可以通過(guò)其內(nèi)置函數(shù)len(array)獲取其長(zhǎng)度,當(dāng)它作為方法的參數(shù)傳入時(shí),將復(fù)制一份數(shù)組,而不是引用同一個(gè)指針。

初始化:

[5]int{1,2,3,4,5}???#長(zhǎng)度為5的數(shù)組,其值分別為1,2,3,4,5
[5]int{1,2}???#長(zhǎng)度為5的數(shù)組,其值分別為1,2,0,0,0?在初始化時(shí),沒(méi)有指定初值的元素,int類型的默認(rèn)為0,string類型默認(rèn)為"",bool類型默認(rèn)為false
[...]int{1,2,3,4,5}?#長(zhǎng)度為5的數(shù)組,其長(zhǎng)度由初始化時(shí)元素的個(gè)數(shù)決定
[5]int{2:1,3:2,4:3}?#長(zhǎng)度為5的數(shù)組,key:value?,其值分別為0,0,1,2,3;?初始化時(shí)指定了2、3、4號(hào)索引的值分別為1,2,3
[...]int{2:1,4:3}?#長(zhǎng)度為5的數(shù)組,其值分別為0,0,1,0,3,?長(zhǎng)度為5(由元素個(gè)數(shù)決定)

賦值與使用:

package?main

import?"fmt"

func?test1(){
????arr?:=?[...]int{1,2,3,4,5}
????arr[4]=arr[4]+len(arr)
????fmt.Println(len(arr))
????fmt.Println(arr)
}
func?test2(){
????arr2?:=?[...]int{2:3,3:1,4:0}
????for?index,?value?:=?range?arr2?{
????????fmt.Printf("arr2[%d]?=?%d\n",index,value)
????}
????fmt.Println("-------------")
????for?index?:=?0;index

array 是值類型,將一個(gè)數(shù)組復(fù)制給另一個(gè)數(shù)組時(shí),實(shí)際上是重新復(fù)制了一份元素集合。

func?test3(){
????arr3?:=?[5]int{2,3}
????arr5?:=?arr3
????arr3[3]=9
????arr5[0]=1
????fmt.Printf("arr3=%d\n?arr5=%d\n?arr5[0]==arr3[0]=%t",arr3,arr5,arr5[0]==arr3[0])
}
func?main(){
????//?test1()
????//?test2()
????test3()
}

**切片 Slices**

數(shù)組的長(zhǎng)度是不可變的,那么在特定的場(chǎng)景中這樣的集合就不適合了,于是golang提供了一種功能強(qiáng)悍的內(nèi)置類型slices,相比于數(shù)組array,切片slices的長(zhǎng)度是不固定的,可以追加元素,追加元素的時(shí)候可能是切片的容量增大。切片slices有兩個(gè)概念:一個(gè)是長(zhǎng)度len,一個(gè)是容量cap。

初始化

切片可以通過(guò)數(shù)組來(lái)初始化,也可以通過(guò)內(nèi)置函數(shù)make()初始化,初始化時(shí)len=cap,在追加元素時(shí),當(dāng)容量不足時(shí),cap將按照l(shuí)en的2倍擴(kuò)容。

s?:=?[]int{1,2,3}???#直接初始化切片,切片的初始值為1,2,3;len=cap=3
s?:=?arr[:]??#初始化切片s,是數(shù)組arr的引用
s?:=?arr[startIndex:endIndex]??#將arr中從下標(biāo)startIndex到endIndex-1?下的元素創(chuàng)建為一個(gè)新的切片
s?:=?arr[startIndex:]???#缺省endIndex時(shí)將表示一直到arr的最后一個(gè)元素
s?:=?arr[:endIndex]???#缺省startIndex時(shí)將表示從arr的第一個(gè)元素開(kāi)始
s1?:=?s[startIndex:endIndex]?#通過(guò)切片s,來(lái)初始化切片s1
s?:=make([]int,len,cap)????#通過(guò)內(nèi)置函數(shù)make()初始化切片s,[]int?標(biāo)識(shí)為其元素類型為int的切片

賦值與引用

package?main
import?"fmt"

func?main(){
????s0?:=?[]int{1,2,3,4,5}
????s1?:=?s0[1:]
????fmt.Println("s1=",s1)
????s0[1]=1
????fmt.Println(s1)
????arr?:=?[...]int{1,2,3,4,6}
????s2:=arr[:]
????fmt.Printf("arr=%d,?s2=%d\n",arr,s2)
????arr[3]=3
????fmt.Printf("arr=%d,s2=%d\n",arr,s2)
????fmt.Println("s0=",s0,"s2=",s2,"arr=",arr)
????s2?=?append(s2,?s0...)
????s2?=?append(s2,?arr[:]...)?//追加數(shù)組元素
????fmt.Println("s2=",?s2)
????s3?:=?append(s1,?7,?9,?11)
????fmt.Println("s3=",?s3)
}

output

s1=?[2?3?4?5]
[1?3?4?5]
arr=[1?2?3?4?6],?s2=[1?2?3?4?6]
arr=[1?2?3?3?6],s2=[1?2?3?3?6]
s0=?[1?1?3?4?5]?s2=?[1?2?3?3?6]?arr=?[1?2?3?3?6]
s2=?[1?2?3?3?6?1?1?3?4?5?1?2?3?3?6]
s3=?[1?3?4?5?7?9?11]

新聞標(biāo)題:golang碎片整理之?dāng)?shù)組與切片
標(biāo)題來(lái)源:http://weahome.cn/article/gjssgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部