91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang碎片整理之 數組與切片

發布時間:2020-07-08 14:36:01 來源:網絡 閱讀:481 作者:霍帥兵 欄目:編程語言

**數組 Array**


數組是一種內建的類型,是一組同類型數據的集合,是一種值類型,可以通過從0開始的下標索引訪問元素值,在初始化后其長度就固定了,無法修改其長度,而且Array的長度也是其類型的一部分,可以通過其內置函數len(array)獲取其長度,當它作為方法的參數傳入時,將復制一份數組,而不是引用同一個指針。


初始化:

[5]int{1,2,3,4,5}???#長度為5的數組,其值分別為1,2,3,4,5
[5]int{1,2}???#長度為5的數組,其值分別為1,2,0,0,0?在初始化時,沒有指定初值的元素,int類型的默認為0,string類型默認為"",bool類型默認為false
[...]int{1,2,3,4,5}?#長度為5的數組,其長度由初始化時元素的個數決定
[5]int{2:1,3:2,4:3}?#長度為5的數組,key:value?,其值分別為0,0,1,2,3;?初始化時指定了2、3、4號索引的值分別為1,2,3
[...]int{2:1,4:3}?#長度為5的數組,其值分別為0,0,1,0,3,?長度為5(由元素個數決定)

賦值與使用:

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<len(arr2);index++?{
????????fmt.Printf("arr2[%d]?=?%d\n",index,arr2[index])
????}
}
func?main(){
????test1()
????test2()
}

array 是值類型,將一個數組復制給另一個數組時,實際上是重新復制了一份元素集合。

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**

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


初始化


切片可以通過數組來初始化,也可以通過內置函數make()初始化,初始化時len=cap,在追加元素時,當容量不足時,cap將按照len的2倍擴容。

s?:=?[]int{1,2,3}???#直接初始化切片,切片的初始值為1,2,3;len=cap=3
s?:=?arr[:]??#初始化切片s,是數組arr的引用
s?:=?arr[startIndex:endIndex]??#將arr中從下標startIndex到endIndex-1?下的元素創建為一個新的切片
s?:=?arr[startIndex:]???#缺省endIndex時將表示一直到arr的最后一個元素
s?:=?arr[:endIndex]???#缺省startIndex時將表示從arr的第一個元素開始
s1?:=?s[startIndex:endIndex]?#通過切片s,來初始化切片s1
s?:=make([]int,len,cap)????#通過內置函數make()初始化切片s,[]int?標識為其元素類型為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[:]...)?//追加數組元素
????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]


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

馆陶县| 乌拉特后旗| 秀山| 德江县| 庄河市| 曲周县| 岚皋县| 株洲县| 江永县| 宁远县| 漠河县| 福海县| 建瓯市| 理塘县| 阳曲县| 和田市| 辉南县| 麟游县| 昆山市| 五华县| 新竹市| 柏乡县| 静海县| 泰顺县| 金华市| 崇义县| 平度市| 淮阳县| 绥宁县| 景德镇市| 南昌市| 富裕县| 拜城县| 兴义市| 开化县| 河北省| 舞钢市| 新余市| 桂平市| 融水| 宁海县|