最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Go語言基礎(chǔ) 切片使用

2022-04-26 14:28 作者:后端攻城獅哇  | 我要投稿

Go 中常用的容器

Golang 中以標(biāo)準(zhǔn)庫的方式提供了常用的容器實(shí)現(xiàn),基本能夠滿足我們?nèi)粘i_發(fā)的需要。我們來具體學(xué)習(xí)下 Go 數(shù)組的使用。

切片

切片是對(duì)數(shù)組一個(gè)連續(xù)片段的引用,它是一個(gè)容量可變的序列。我們可以簡(jiǎn)單將切片理解為動(dòng)態(tài)數(shù)組,它的內(nèi)部結(jié)構(gòu)包括底層數(shù)組指針、大小和容量,它通過指針引用底層數(shù)組,把對(duì)數(shù)據(jù)的讀寫操作限定在指定的區(qū)域內(nèi)。

切片的結(jié)構(gòu)體由三部分組成:

  • array?是指向底層存儲(chǔ)數(shù)據(jù)數(shù)組的指針;

  • len?指當(dāng)前切片的長(zhǎng)度,即成員數(shù)量;

  • cap?指當(dāng)前切片的容量,它總是大于等于?len。

我們可以從原有數(shù)組中生成一個(gè)切片,那么生成的切片指針即指向原數(shù)組,生成的樣式如下:


source表示生成切皮的原有數(shù)組,begin?表示切片的開始位置,end?表示切片的結(jié)束位置,不包含?end?索引指向的成員。具體效果如下例子所示:


輸出的結(jié)果為:

在這個(gè)切片內(nèi),我們僅能訪問長(zhǎng)度內(nèi)的值,如果訪問的下標(biāo)超過了切片的長(zhǎng)度,編譯器將會(huì)拋出下標(biāo)越界的異常。如果此時(shí)我們對(duì)切片內(nèi)的成員進(jìn)行修改,因?yàn)榍衅鳛橹赶蛟袛?shù)組的引用,對(duì)切片進(jìn)行修改就是對(duì)原有數(shù)組進(jìn)行修改,如下例子所示:


結(jié)果如下所示:


上面例子中我們修改了切片中的值,直接導(dǎo)致原數(shù)組中的值也發(fā)生了變化。

我們也可以通過?make?函數(shù)動(dòng)態(tài)創(chuàng)建切片,在創(chuàng)建過程中指定切片的長(zhǎng)度和容量,樣式如下所示:


T?即切片中的成員類型,size?為當(dāng)前切片具備的長(zhǎng)度,cap?為當(dāng)前切片預(yù)分配的長(zhǎng)度,即切片的容量。例子如下所示:

輸出的結(jié)果如下:

從上述輸出可以看到?make?函數(shù)創(chuàng)建的新切片中的成員都被初始化為類型的初始值。

切片本質(zhì)就是一個(gè)結(jié)構(gòu)體,他里面包含三部分:address + len + cap,因此作為一個(gè)引用空間,該空間和元素空間完全是兩個(gè)空間,所以切片的首地址和頭號(hào)元素的首地址完全不同。

Go語言基礎(chǔ) 切片使用的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
民丰县| 福清市| 南召县| 全椒县| 孝感市| 友谊县| 九龙城区| 雅安市| 茂名市| 漳州市| 昌江| 汽车| 乌兰浩特市| 赣榆县| 宁安市| 衡南县| 岐山县| 柞水县| 大埔区| 体育| 莒南县| 湖北省| 蕉岭县| 电白县| 闻喜县| 托克托县| 凤山市| 六安市| 黔江区| 五家渠市| 买车| 晋州市| 奎屯市| 右玉县| 灌阳县| 武平县| 垣曲县| 岱山县| 获嘉县| 乐陵市| 罗城|