Golang界面&铸件

时间:2016-06-10 04:25:18

标签: go

我有以下代码:

   func returnTheMap() map[string][]string{
        myThing := getSomeValue()
    }

getSomeValue()会返回map[string]interface{}

类型的内容

始终内部为map[string][]string

myThing设置为与getSomeValue()相同,但类型为map[string][]string的最佳方式是什么?

我可以像这样制作一个新对象:

newMap := make(map[string][]string)

// cardTypeList is of type map[string]interface {}, must convert to map[string][]string
for k, v := range myThing {
    newMap[k] = v.([]string)
}

但有没有办法在现场执行此操作,或者有任何首选方法可以执行此操作吗?

2 个答案:

答案 0 :(得分:6)

根据Go FAQ,您无法直接更改切片的类型。

所以看起来您的解决方案是首选方式。

答案 1 :(得分:0)

getSomeValue()是你的功能吗?如果是这样,我会将返回类型更改为map[string][]string而不是map[string][]interface

如果不是这样,我会创建一些帮助程序,并检查以确保根据您的需要设置类型。我在操场上有一个例子

https://play.golang.org/p/9OPgXGXADY