package main import "fmt" // 字典結構 type Dictionary struct { data map[interface{}]interface{} // 鍵值都為interface{}型別 } // 根據鍵獲取值 func (d *Dictionary) Get(key interface{}) interface{} { return d.data[key] } // 設定鍵值 func (d *Dictionary) Set(key interface{}, value interface{}) { d.data[key] = value } // 遍歷所有的鍵值,如果回撥返回值為false,停止遍歷 func (d *Dictionary) Visit(callback func(k, v interface{}) bool) { if callback == nil { return } for k, v := range d.data { if !callback(k, v) { return } } } // 清空所有的資料 func (d *Dictionary) Clear() { d.data = make(map[interface{}]interface{}) } // 建立一個字典 func NewDictionary() *Dictionary { d := &Dictionary{} // 初始化map d.Clear() return d } func main() { // 建立字典範例 dict := NewDictionary() // 新增遊戲資料 dict.Set("My Factory", 60) dict.Set("Terra Craft", 36) dict.Set("Don't Hungry", 24) // 獲取值及列印值 favorite := dict.Get("Terra Craft") fmt.Println("favorite:", favorite) // 遍歷所有的字典元素 dict.Visit(func(key, value interface{}) bool { // 將值轉為int型別,並判斷是否大於40 if value.(int) > 40 { // 輸出很貴 fmt.Println(key, "is expensive") return true } // 預設都是輸出很便宜 fmt.Println(key, "is cheap") return true }) }
// 字典結構 type Dictionary struct { data map[interface{}]interface{} // 鍵值都為interface{}型別 } // 根據鍵獲取值 func (d *Dictionary) Get(key interface{}) interface{} { return d.data[key] } // 設定鍵值 func (d *Dictionary) Set(key interface{}, value interface{}) { d.data[key] = value }程式碼說明如下:
// 遍歷所有的鍵值,如果回撥返回值為 false,停止遍歷 func (d *Dictionary) Visit(callback func(k, v interface{}) bool) { if callback == nil { return } for k, v := range d.data { if !callback(k, v) { return } } }程式碼說明如下:
// 清空所有的資料 func (d *Dictionary) Clear() { d.data = make(map[interface{}]interface{}) } // 建立一個字典 func NewDictionary() *Dictionary { d := &Dictionary{} // 初始化map d.Clear() return d }程式碼說明如下:
func main() { // 建立字典範例 dict := NewDictionary() // 新增遊戲資料 dict.Set("My Factory", 60) dict.Set("Terra Craft", 36) dict.Set("Don't Hungry", 24) // 獲取值及列印值 favorite := dict.Get("Terra Craft") fmt.Println("favorite:", favorite) // 遍歷所有的字典元素 dict.Visit(func(key, value interface{}) bool { // 將值轉為int型別,並判斷是否大於40 if value.(int) > 40 { // 輸出很貴 fmt.Println(key, "is expensive") return true } // 預設都是輸出很便宜 fmt.Println(key, "is cheap") return true }) }程式碼說明如下:
favorite: 36
My Factory is expensive
Terra Craft is cheap
Don't Hungry is cheap