Go Slices: usage and internals(上)

原文翻譯: https://go.dev/blog/slices-intro

介紹

go語(yǔ)言的slice類型提供一種方便快捷的數(shù)據(jù)類型。切片類似于其他語(yǔ)言的數(shù)組, 但也有些不同的屬性。接下來(lái)會(huì)介紹什么是 slice 并且如何使用。

數(shù)組

切片類型是構(gòu)建于數(shù)組類型之上的,所以理解切片之前必須先理解數(shù)組。

一個(gè)數(shù)組類型的定義有長(zhǎng)度和元素類型。例如

[4]int

相當(dāng)與一個(gè)數(shù)組有 4 個(gè) int 類型。數(shù)組的長(zhǎng)度是固定;數(shù)組長(zhǎng)度的一部分是數(shù)組的類型([4]int and [5]int 是沖突的不同類型)。數(shù)組可以通過(guò)索引獲取元素,例如

s[n]

可以獲取到第 n 個(gè)元素,當(dāng)然索引是從零開始;


var a [4]int

a[0] = 1

i := a[0] // i == 1

數(shù)組不需要顯示的初始化;每個(gè)元素都是對(duì)應(yīng)類型的零值

// a[2] == 0, the zero value of the int type

[4]int 是 4 個(gè) int 值,在內(nèi)存中是連續(xù)空間

image

數(shù)組是一組 value 組成。一個(gè)數(shù)組變量表示一個(gè)全部的數(shù)組;它不是指向第一個(gè)數(shù)組元素的指針(就像 C 中的情況一樣)。這就意味著當(dāng)你賦值或傳遞的數(shù)組都是內(nèi)容拷貝。(傳遞一個(gè)指針數(shù)組可以避免內(nèi)容拷貝,但是那是一個(gè)指針,不是數(shù)組)。一個(gè)思路是數(shù)組是固定長(zhǎng)度復(fù)合類型且有索引的短結(jié)構(gòu)體而不是命名字段。

字面表達(dá),例如:

b := [2]string{"Penn", "Teller"}

或者用編譯器計(jì)算元素總數(shù):

b := [...]string{"Penn", "Teller"}

這兩個(gè)方式,變量b 都表示 [2]string

完(上半部)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容