Go语言实现一键多值的Map

2020-08-17  本文已影响0人  宋song一

Go语言实现一键多值的Map

package main

type Multimap map[string][]string

type keyValues struct {
       key    string
       values []string
}

func (multimap Multimap) Add(key, value string) {
       if len(multimap[key]) == 0 {
              multimap[key] = []string{value}
       } else {
              multimap[key] = append(multimap[key], value)
       }
}

func (multimap Multimap) Get(key string) []string {
       if multimap == nil {
              return nil
       }
       values := multimap[key]
       return values
}

func main() {
       var myMap Multimap
       myMap = make(Multimap);
       myMap.Add("黑龙江", "齐齐哈尔")
       myMap.Add("黑龙江", "哈尔滨")
       myMap.Add("黑龙江", "大庆")
       myMap.Add("辽宁", "大连")
       myMap.Add("辽宁", "沈阳")

       for key := range myMap {
              for j := 0; j < len(myMap[key]); j++ {
                     println(myMap[key][j])
              }
       }
}

对象切片作为map的值时,删除对象后,修改原map,需要将对象赋值给原map
myMap[i] = sli

上一篇 下一篇

猜你喜欢

热点阅读