集合(map)是一種無序的 hash 鍵值對集合。通過 key 來快速檢索 value,所以我們可以像迭代字串、陣列和切片那樣迭代它。golang 的 map 資料型別類似於 python 的字典資料型別,但封裝程度較原始。
可以使用用 map 關鍵字來宣告乙個 map 變數,也可以使用內建的 make() 函式來定義乙個 map 變數:
var map_variable map
[key_data_type]value_data_type
// or
map_variable :=
make
(map
[key_data_type]value_data_type)
注意,make() 函式會完成變數的初始化,而 map 關鍵字僅僅是宣告了乙個變數,沒有被初始化的 map 變數,預設值為 nil,不能直接用於存放鍵值對。可見 map 變數是引用語義的。
示例:
package main
import
"fmt"
func
main()
/* 檢視元素在集合中是否存在 */
capital, ok := countrycapitalmap[
"american"
]if ok
else
}
delete() 函式用於刪除 map 集合中指定的元素,引數為 map 變數和其對應的 key。
示例:
package main
import
"fmt"
func
main()
/* 刪除元素 */
delete
(countrycapitalmap,
"france"
) fmt.
println
("法國條目被刪除"
) fmt.
println
("刪除元素後地圖"
)for country :=
range countrycapitalmap
}
結果:
法國條目被刪除
刪除元素後地圖
japan 首都是 tokyo
india 首都是 new delhi
italy 首都是 rome
package main
import
("fmt"
)type hashmap struct
var table [16]
(*hashmap)
func
inittable()
}}func
getinstance()
[16](
*hashmap)
return table
}func
genhashcode
(k string
)int
var hashcode int=0
var lastindex int
=len
(k)-
1for i :=
range k
hashcode +=
(hashcode +
int(k[i]))
*31}return hashcode
}func
indextable
(hashcode int
)int
func
indexnode
(hashcode int
)int
func
put(k string
, v string
)string
var tableindex =
indextable
(hashcode)
var nodeindex =
indexnode
(hashcode)
var headptr [16]
(*hashmap)
=getinstance()
var headnode = headptr[tableindex]if(
*headnode)
.key ==
""var lastnode *hashmap = headnode
var nextnode *hashmap =
(*headnode)
.next
for nextnode !=
nil&&
(indexnode((
*nextnode)
.hashcode)
< nodeindex)if(
*lastnode)
.hashcode == thisnode.hashcode
if lastnode.hashcode < thisnode.hashcode
if nextnode !=
nilreturn""}
func
get(k string
)string
for(
*node)
.next !=
nil node =
(*node)
.next
}return""}
//examples
func
main()
結果:
a_put
b_put
p_put
Go 語言程式設計 高階資料型別 陣列
向函式傳遞陣列 指標陣列 陣列是具有相同資料型別的一組已編號且長度固定的資料項序列,可以是任意的原始資料型別也可以是自定義的資料型別。陣列元素可以通過索引 位置 來讀取 或者修改 索引從 0 開始,第乙個元素索引為 0,第二個索引為 1,以此類推。golang 陣列宣告需要指定元素型別及元素個數,使...
Go 語言程式設計 高階資料型別 指標
乙個指標變數指向了乙個值的記憶體位址。類似於變數和常量,在使用指標前需要宣告 定義乙個指標變數。宣告乙個指標變數,格式 var var name type示例 var ip int 宣告整型指標變數 var fp float32 宣告浮點型指標變數 指標使用流程 宣告指標變數。為指標變數賦值。訪問指...
go語言資料型別之集合map
初識 map是一種無序的基於key value的資料結構,go語言中的map是引用型別,必須初始化才能使用。它得內部基於雜湊表 hash 實現 map keytype valuetypekeytype 表示鍵的型別。valuetype 表示鍵對應的值的型別。方法一 scoremap make map...