Go起步走 - Map
在Go當中,map
相當於JavaScript中的object、Ruby中的hash。
結構
結構上簡單來說就是一個key對上一個value。例如:
my_map["food"]
// 回傳"hamburger"
// 意思是給予一個key,就會像查字典一樣,回傳一個value
用法
因為強型別的關係,所有key和value必須保持統一的型別,宣告時要指定清楚。
var my_map map[string]string
// 第一個string是說明key的型別是string
// 第二個string是說明value的型別是string
my_map = make(map[string]string)
// 一般的宣告方法,必須要另外用make關鍵字才可開始給予數值
my_map["food"] = "hamburger"
還要先make完全就是個麻煩,當然,Go還是提供了一個快速宣告的方法。
my_map := map[string]string {
"food" : "hamburger",
"drink": "coke",
}
// 注意最後的逗號(,)必須留著
一般的insert、update、delete、查詢方法
my_map["dessert"] = "cake"
// 不管是新增、更新內容,都可以用等號直接給予數值
delete(my_map, "food")
// 刪除的方法難得很人性化,我一直覺得靜態語言不管什麼都很不人性化
len(my_map)
// 檢查map當中有多少個key
另外map可以直接回傳兩個變數,用以檢查該值是否存在。
var value, exist = my_map["food"]
// value = "hamburger"
// exist = true
// 第一個回傳值會回傳該key的value,第二個回傳值僅會回傳該值是否存在
var _, exist = my_app["food"]
//僅檢查該value是否存在而不使用該value
使用loop時,會直接將每一個key都跑過一遍,跟Ruby的each
相當。
for key, value := range my_map {
fmt.Println("Key: " + key)
fmt.Println("Value: " + value)
}
// 在loop當中可直接使用key、value作為變數