溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

go語(yǔ)言中的數(shù)組和切片有什么不同

發(fā)布時(shí)間:2020-06-12 20:12:43 來(lái)源:億速云 閱讀:171 作者:鴿子 欄目:編程語(yǔ)言

數(shù)組

是內(nèi)置(build-in)類型,是一組同類型數(shù)據(jù)的集合,它是值類型,通過(guò)從0開(kāi)始的下標(biāo)索引訪問(wèn)元素值。在初始化后長(zhǎng)度是固定的,

無(wú)法修改其長(zhǎng)度。當(dāng)作為方法的參數(shù)傳入時(shí)將復(fù)制一份數(shù)組而不是引用同一指針。數(shù)組的長(zhǎng)度也是其類型的一部分,通過(guò)內(nèi)置函數(shù)

len(array)獲取其長(zhǎng)度。

注意:和C中的數(shù)組相比,又是有一些不同的

1、Go中的數(shù)組是值類型,換句話說(shuō),如果你將一個(gè)數(shù)組賦值給另外一個(gè)數(shù)組,那么,實(shí)際上就是將整個(gè)數(shù)組拷貝一份

2、如果Go中的數(shù)組作為函數(shù)的參數(shù),那么實(shí)際傳遞的參數(shù)是一份數(shù)組的拷貝,而不是數(shù)組的指針。這個(gè)和C要區(qū)分開(kāi)。因此,在Go

中如果將數(shù)組作為函數(shù)的參數(shù)傳遞的話,那效率就肯定沒(méi)有傳遞指針高了。

3、array的長(zhǎng)度也是Type的一部分,這樣就說(shuō)明[10]int和[20]int是不一樣的。

切片

數(shù)組的長(zhǎng)度不可改變,在特定場(chǎng)景中這樣的集合就不太適用,Go中提供了一種靈活,功能強(qiáng)悍的內(nèi)置類型Slices切片(“動(dòng)態(tài)數(shù)組"),與

數(shù)組相比切片的長(zhǎng)度是不固定的,可以追加元素,在追加時(shí)可能使切片的容量增大。切片中有兩個(gè)概念:一是len長(zhǎng)度,二是cap容

量,長(zhǎng)度是指已經(jīng)被賦過(guò)值的最大下標(biāo)+1,可通過(guò)內(nèi)置函數(shù)len()獲得。容量是指切片目前可容納的最多元素個(gè)數(shù),可通過(guò)內(nèi)置函數(shù)

cap()獲得。切片是引用類型,因此在當(dāng)傳遞切片時(shí)將引用同一指針,修改值將會(huì)影響其他的對(duì)象。

以上就是golang數(shù)組和切片的區(qū)別是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI