陣列與切片

2021-09-12 03:00:32 字數 916 閱讀 5117

1、在golang中陣列與切片的定義

在golang中,有乙個「罕見」的復合型別,叫切片,切片是基於陣列的,golang和其它語言不一樣,在golang中,陣列是不可變的,對陣列進行型別轉換等操作都會導致golang隱式的申請一塊記憶體,然後將原陣列的內容複製到這塊記憶體。

在實際的開發當中,我們經常使用的是切片,而不是陣列。

注意:陣列是不可變的,這就決定了字串也是不可變的,因為字串底層就是乙個byte陣列實現的。

2、切片

切片是基於陣列的,它表示乙個擁有相同型別元素的可變長度的序列

切片是一種輕量級的資料結構,可以用來訪問陣列的部分或者全部的元素。即,可以把它看作乙個指向陣列的某塊區域的引用,這塊區域可以是陣列的部分,也可以是陣列的全部。

切片包含長度,容量,指標三個屬性,指標指向的是陣列的某塊區域,容量一般是陣列的長度,而長度指的是切片開始的位置到切片結束的位置的長度,而容量是指切片開始的位置到陣列結束的位置。所以切片是依賴陣列的。

舉個例子:

陣列: arr := [...]int
切片:slice := arr[0:3] , 它所代表的意思就是陣列arr中下標從0到2的內容(左閉右開)
3、注意事項:

(1)arr := [...]int 與 arr := [ ]int的區別??

如果加上省略號,表示可以不寫陣列長度,而是根據後面的初始化的序列來推斷出陣列長度,而省略了省略號,就表示宣告乙個切片

(2)在給函式傳遞引數時,是該傳遞陣列,還是傳遞切片??

看具體的需求吧,但需要留意的是當傳遞陣列的時候,相當於深拷貝,不會對原陣列進行修改;而傳遞的是切片時,相當於c或者c++中傳遞陣列首位址一樣,會對其進行修改

陣列與切片

1 陣列 在go語言裡,陣列是乙個長度固定的資料型別,用於儲存一段具有相同的型別的元素的連續塊。陣列儲存的型別可以是內建型別,如整型或者字串,也可以是某種結構型別。1 陣列的建立 先宣告,再賦值 var array 5 int array 1 3 建立固定長度的陣列 array 5 int 陣列長度...

go陣列與切片

go陣列 陣列宣告 var variable name size variable type eg var balance 10 float32 陣列初始化 var balance 5 float32 初始化陣列中 中的元素個數不能大於 中的數字。如果忽略 中的數字不設定陣列大小,go 語言會根據元...

go陣列與切片

陣列是具有相同唯一型別的一組長度固定的資料項序列,這種型別可以是任意的原始型別,例如整形,字元型或者自定義型別。陣列長度必須是乙個常量的表示式,並且是乙個非負整數。陣列元素可以用個索引累讀取,陣列長度最大為2gb。宣告格式為 var identifier len type 複製 例如 var arr...