Golang 資料結構 字典

2021-10-08 06:51:30 字數 1917 閱讀 4759

字典儲存[key,value]對,go提供了非常方便的實現,內建的map型別。

本文增強內建的map型別,新增便捷的操作用於獲取或改變其內容。建立itemdictionary泛型、併發安全的,能夠生成任何具體型別。

通過dict := valuedictionary{}建立字典,提供一組暴露方法:

}測試**描述如何使用上面定義的字典。我們不會直接和底層map進行互動,但如何go沒有提供map型別,需要另外的實現。

package dict

import (

"fmt"

"testing"

)func testvaluedictionary_set(t *testing.t)

dict.set("1",1)

dict.set("2",2)

dict.set("3",3)

dict.set("4",4)

fmt.println("size:",dict.size())

fmt.println("1:",dict.get("1"))

dict.delete("1")

fmt.println("keys",dict.keys())

fmt.println("values",dict.values())

fmt.println("has 2",dict.has("2"))

fmt.println("del 2",dict.delete("2"))

fmt.println("size:",dict.size())

dict.clear()

fmt.println("size:",dict.size())

}

我們可以通過下面命令生成具體型別字典:

genny -in itemdictionary.go -out dictionary-string-int.go gen "key=string value=int"
本文基於map實現了字典資料型別,採用泛型方式,支援併發安全。

golang資料結構

常見的資料結構有陣列 切片 map 結構體。陣列是乙個由固定長度的特定型別元素組成的序列,乙個陣列可以由零個或多個元素組成。陣列的宣告語法如下 var variable name size variable type陣列變數名 陣列宣告及使用時的變數名。元素數量 陣列的元素數量,可以是乙個表示式,但...

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 是兩種不同的資料型別 編譯器會把...

資料結構 字典

宣告 本文為學習資料結構與演算法分析 第三版 clifford a.shaffer 著的學習筆記,有參考該書的示例 碎碎語 其實我一直對這個資料結構不是很了解。字典 dictionary 作為資料庫的乙個簡單介面,提供在資料庫中儲存 查詢和刪除記錄的可能。字典中有定義關鍵碼 search key 的...