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

溫馨提示×

溫馨提示×

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

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

Go語言中的數組與切片介紹

發布時間:2021-08-27 17:00:20 來源:億速云 閱讀:115 作者:chen 欄目:數據庫

這篇文章主要講解了“Go語言中的數組與切片介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Go語言中的數組與切片介紹”吧!

1. 數組

數組是一個由固定長度的特定類型元素組成的序列,一個數組可以由零個或多個元素組成。因為數組的長度是固定的,所以在Go語言中很少直接使用數組。

聲明數組,并給該數組里的每個元素賦值(索引值的最小有效值和其他大多數語言一樣是 0,不是1)

//[3]里的3表示該數組的元素個數 vararr[3]int arr[0]=1 arr[1]=2 arr[2]=3

聲明并直接初始化數組

//第一種方法 vararr[3]int=[3]int{1,2,3} //第二種方法 arr:=[3]int{1,2,3}

上面的 3 表示數組的元素個數 ,萬一你哪天想往該數組中增加元素,你得對應修改這個數字,為了避免這種硬編碼,你可以這樣寫,使用...讓Go語言自己根據實際情況來分配空間。

arr:=[...]int{1,2,3}

[3]int和[4]int雖然都是數組,但他們卻是不同的類型,使用 fmt 的%T可以查得,如果使用 == 來比較,答案會是false

import("fmt" ) funcmain(){arr01:=[...]int{1,2,3}arr02:=[...]int{1,2,3,4}fmt.Printf("%d的類型是:%T\n",arr01,arr01)fmt.Printf("%d的類型是:%T",arr02,arr02)}

輸出 如下

[1 2 3]的類型是:[3]int [1 2 3 4]的類型是:[4]int

如果你覺得每次寫[3]int有點麻煩,你可以為[3]int定義一個類型字面量,也就是別名類型。

使用type關鍵字可以定義一個類型字面量,后面只要你想定義一個容器大小為3,元素類型為int的數組 ,都可以使用這個別名類型。

import("fmt" ) funcmain(){typearr3[3]int myarr:=arr3{1,2,3}fmt.Printf("%d的類型是:%T",myarr,myarr)}

輸出 如下

[123]的類型是:main.arr3

2. 切片

切片(Slice)與數組一樣,也是可以容納若干類型相同的元素的容器。與數組不同的是,無法通過切片類型來確定其值的長度。每個切片值都會將數組作為其底層數據結構。我們也把這樣的數組稱為切片的底層數組。

切片是對數組的一個連續片段的引用,所以切片是一個引用類型,這個片段可以是整個數組,也可以是由起始和終止索引標識的一些項的子集,需要注意的是,終止索引標識的項不包括在切片內(意思是這是個左閉右開的區間)

import("fmt" ) funcmain(){myarr:=[...]int{1,2,3}fmt.Printf("%d的類型是:%T",myarr[0:2],myarr[0:2])}

輸出 如下

[1 2]的類型是:[]int

切片的構造,有三種方式

    對數組進行片段截取(上面例子已經展示:myarr[0:2],0是索引起始值,2是索引終止值,區間左半右開)

    從頭聲明賦值(例子如下)

    //聲明字符串切片 varstrList[]string //聲明整型切片 varnumList[]int //聲明一個空切片 varnumListEmpty=[]int{}

    使用 make 函數構造,make 函數的格式:make( []Type, size, cap )

    這個函數剛好指出了,一個切片具備的三個屬性:類型(Type),長度(size),容量(cap)

    import("fmt" ) funcmain(){a:=make([]int,2)b:=make([]int,2,10)fmt.Println(a,b)fmt.Println(len(a),len(b))fmt.Println(cap(a),cap(b))}

    輸出 如下

    [00][00] 22 210

關于 len 和 cap 的概念,可能不好理解 ,這里舉個例子:

公司名,就是變量名。公司里的所有工位,相當于已分配到的內存空間公司里的員工,相當于元素。cap 代表你這個公司最多可以容納多少員工len 代表你這個公司當前有多少個員工,所以cap>=len

由于 切片是引用類型,所以你不對它進行賦值的話,它的零值(默認值)是 nil

varmyarr[]int fmt.Println(myarr==nil) //true

數組 與 切片 有相同點,它們都是可以容納若干類型相同的元素的容器

也有不同點,數組的容器大小固定,而切片本身是引用類型,它更像是 Python 中的 list ,我們可以對它 append 進行元素的添加。

import("fmt" ) funcmain(){myarr:=[]int{1}//追加一個元素 myarr=append(myarr,2)//追加多個元素 myarr=append(myarr,3,4)//追加一個切片,...表示解包,不能省略 myarr=append(myarr,[]int{7,8}...)//在第一個位置插入元素 myarr=append([]int{0},myarr...)//在中間插入一個切片(兩個元素) myarr=append(myarr[:5],append([]int{5,6},myarr[5:]...)...)fmt.Println(myarr)}

輸出 如下

[012345678]

最后,給你留一道思考題,如下這段代碼:

import("fmt" ) funcmain(){varnumbers4=[...]int{1,2,3,4,5,6,7,8,9,10}myslice:=numbers4[4:6:8]fmt.Printf("myslice為%d,其長度為:%d\n",myslice,len(myslice))myslice=myslice[:cap(myslice)]fmt.Printf("myslice的第四個元素為:%d",myslice[3])}

為什么 myslice 的長度為2,卻能訪問到第四個元素?

myslice為[56],其長度為:2 myslice的第四個元素為:8

感謝各位的閱讀,以上就是“Go語言中的數組與切片介紹”的內容了,經過本文的學習后,相信大家對Go語言中的數組與切片介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

城市| 墨江| 平谷区| 龙山县| 婺源县| 菏泽市| 涟水县| 容城县| 那曲县| 金门县| 类乌齐县| 广南县| 曲阳县| 增城市| 石屏县| 寿阳县| 分宜县| 武城县| 孟津县| 德兴市| 慈溪市| 峡江县| 宜兴市| 涡阳县| 阜城县| 旅游| 同心县| 洛浦县| 惠州市| 海门市| 平定县| 酒泉市| 南澳县| 柳林县| 会同县| 巴林左旗| 鄯善县| 阜宁县| 城固县| 金秀| 芜湖县|