Go 戈朗接口公司;铸造
我有以下代码:Go 戈朗接口公司;铸造,go,Go,我有以下代码: func returnTheMap() map[string][]string{ myThing := getSomeValue() } getSomeValue()返回类型为map[string]interface{} 但它在内部始终是一个映射[string][]字符串 将myThing设置为与getSomeValue()相同但类型为map[string][]string的对象的最佳方法是什么 我可以这样制作一个新对象: newMap := ma
func returnTheMap() map[string][]string{
myThing := getSomeValue()
}
getSomeValue()
返回类型为map[string]interface{}
但它在内部始终是一个映射[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)
}
但是有什么方法可以做到这一点,或者有什么更好的方法可以做到这一点吗?根据,您不能直接更改切片的类型
因此,您的解决方案似乎是首选方法。根据,您不能直接更改切片的类型
因此,您的解决方案似乎是首选方法。是getSomeValue()
您的函数吗?如果是这样,我会将返回类型更改为map[string][]string
而不是map[string][]interface
如果不是这样的话,我会创建一些助手来查看和检查,以确保类型设置符合您的需要。我在操场上有一个例子
是getSomeValue()
您的函数吗?如果是这样,我会将返回类型更改为map[string][]string
而不是map[string][]interface
如果不是这样的话,我会创建一些助手来查看和检查,以确保类型设置符合您的需要。我在操场上有一个例子
这是正确的。更改切片的类型是一个O(n)操作,Golang开发人员不希望O(n)类型转换看起来像其他类型转换(O(1))。为了让它们强制执行,您必须显式地循环内容并单独键入assert,以便在代码中明确操作不是常数时间。这是正确的。更改切片的类型是一个O(n)操作,Golang开发人员不希望O(n)类型转换看起来像其他类型转换(O(1))。为了让它们强制执行,您必须显式地循环内容并单独键入assert,以便在代码中明确操作不是常数时间。