Golang 接口和铸造

我有以下代码:


   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)

}

但是有什么方法可以就地执行此操作,还是有任何首选方法可以执行此操作?


慕盖茨4494581
浏览 152回答 2
2回答

回首忆惘然

根据Go FAQ,您不能直接更改切片的类型。因此,您的解决方案似乎是首选方式。

呼啦一阵风

你getSomeValue()的功能是?如果是这样,我会将返回类型更改为map[string][]string而不是map[string][]interface.如果不是这种情况,我会创建一些帮助程序进行检查以确保类型设置符合您的需求。我在操场上有一个例子https://play.golang.org/p/9OPgXGXADY
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go