我有以下代码:
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)
}
但有没有办法在现场执行此操作,或者有任何首选方法可以执行此操作吗?
答案 0 :(得分:6)
根据Go FAQ,您无法直接更改切片的类型。
所以看起来您的解决方案是首选方式。
答案 1 :(得分:0)
getSomeValue()
是你的功能吗?如果是这样,我会将返回类型更改为map[string][]string
而不是map[string][]interface
。
如果不是这样,我会创建一些帮助程序,并检查以确保根据您的需要设置类型。我在操场上有一个例子