golang資料結構

2021-10-09 03:22:23 字數 1723 閱讀 7642

常見的資料結構有陣列、切片、map、結構體。

陣列是乙個由固定長度的特定型別元素組成的序列,乙個陣列可以由零個或多個元素組成。

陣列的宣告語法如下

var variable_name [size] variable_type
陣列變數名:陣列宣告及使用時的變數名。

元素數量:陣列的元素數量,可以是乙個表示式,但最終通過編譯期計算的結果必須是整型數值,元素數量不能含有到執行時才能確認大小的數值。

type:可以是任意基本型別,包括陣列本身,型別為陣列本身時,可以實現多維陣列。

陣列的每個元素都可以通過索引下標來訪問,索引下標的範圍是從 0 開始到陣列長度減 1 的位置,內建函式 len() 可以返回陣列中元素的個數。

切片(slice)是對陣列的乙個連續片段的引用,所以切片是乙個引用型別。這個片段可以是整個陣列,也可以是由起始和終止索引標識的一些項的子集,需要注意的是,終止索引標識的項不包括在切片內。

切片宣告不需要指定長度,格式為

slice1 :=

make([

]type

,len

)//slice [開始位置 : 結束位置]

這裡 len 是陣列的長度並且也是切片的初始長度。

除了可以從原有的陣列或者切片中生成切片外,也可以宣告乙個新的切片,每一種型別都可以擁有其切片型別,表示多個相同型別元素的連續集合,因此切片型別也可以被宣告

var name [

]type

如果需要動態地建立乙個切片,可以使用 make() 內建函式

make([

]type, size,

cap)

go語言中 map 是一種特殊的資料結構,一種元素對(pair)的無序集合,pair 對應乙個 key(索引)和乙個 value(值),所以這個結構也稱為關聯陣列或字典,這是一種能夠快速尋找值的理想結構,給定 key,就可以迅速找到對應的 value。

map 是引用型別:

var mapname map

[keytype] valuetype

在宣告的時候不需要知道 map 的長度,因為 map 是可以動態增長的,未初始化的 map 的值是 nil,使用函式 len() 可以獲取 map 中 pair 的數目。

可以使用 make()

map_variable :=

make

(map

[keytype] valuetype)

go 語言通過用自定義的方式形成新的型別,結構體是型別中帶有成員的復合型別。結構體是由零個或多個任意型別的值聚合成的實體,每個值都可以稱為結構體的成員(字段)。

成員(字段)的特性:

1.欄位擁有自己的型別和值;

2.欄位名必須唯一;

3.欄位的型別也可以是結構體,甚至是字段所在結構體的型別。

結構體的定義格式:

type 型別名 struct

型別名:標識自定義結構體的名稱,在同乙個包內不能重複。

struct{}:表示結構體型別,type 型別名 struct{}可以理解為將 struct{} 結構體定義為型別名的型別。

欄位1、欄位2……:表示結構體欄位名,結構體中的欄位名必須唯一。

欄位1型別、欄位2型別……:表示結構體各個欄位的型別。

Golang 資料結構

每種語言在實現資料結構有些許不同。go 是如何實現的呢?1.陣列 arraypackage main import fmt func main x 3 4 1 2 0 4 0 0 0 x 8 8 越界無法通過編譯 a 3 int b int 型別推導 x 和 a,b 是兩種不同的資料型別 編譯器會把...

golang基礎資料結構

這裡主要討論四種型別 陣列 slice map和結構體 陣列和結構體是聚合型別 它們的值都是由很多個元素或者成員欄位的值組成。陣列是有同構元素組成 每個陣列的元素的型別相同 結構體為異構元素組成 每個結構體不一定是同型別元素構成 陣列和結構體都是有固定記憶體大小的資料結構 slice和map則是動態...

Golang 資料結構 字典

字典儲存 key,value 對,go提供了非常方便的實現,內建的map型別。本文增強內建的map型別,新增便捷的操作用於獲取或改變其內容。建立itemdictionary泛型 併發安全的,能夠生成任何具體型別。通過dict valuedictionary 建立字典,提供一組暴露方法 測試 描述如何...