package main
import (
"encoding/json"
"fmt"
)
type Dictionary struct {
data map[interface{}]interface{}
}
func (d *Dictionary) Get(key interface{}) interface{}{
return d.data[key]
}
func (d *Dictionary) Set(key, value interface{}) {
d.data[key] = value
}
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 NewDictionary() *Dictionary{
d := &Dictionary{}
d.Clear()
return d
}
func (d *Dictionary) Clear() {
d.data = make(map[interface{}]interface{})
}
func main() {
dict := NewDictionary()
dict.Set("java", 60)
dict.Set("mysql", 36)
dict.Set("redis", 24)
s := dict.Get("java")
fmt.Println(s)
dict.Visit(func(k, v interface{}) bool {
if v.(int) > 40 {
fmt.Println(k, "很贵")
return true
}
fmt.Println(k, "很便宜")
return true
})
}