【发布时间】:2020-09-30 12:46:24
【问题描述】:
我有一个足够通用的函数来遍历 map[string] 并获取所有键:
i := 0
keys := make([]string, len(input))
for k := range input {
keys[i] = k
i++
}
return keys
我的问题是我想在这里输入两个不同的输入,一个 map[string]MyStruct 和 map[string][][]float64。每当我尝试将 func 的输入作为 map[string]interface{} 时,go 都会拒绝我尝试将 map[string]MyStruct 转换为 map[string]interface{ 的所有尝试}。有没有一种方法可以在不需要两个函数的情况下做到这一点,一个使用 map[string]MyStruct 作为输入,一个使用 map[string][][]float64? map[string] 的内容此时并不重要,因为我只是想获取它们的所有键以供稍后在代码中使用。这需要是一个被调用的函数;我们使用的是 Sonar,它被设置为拒绝代码重复,所以我不能复制这个代码 sn-p。
【问题讨论】:
-
你能把 sn-p 贴在你试图“投射”它的地方吗?
-
"go 拒绝了我所有尝试转换的尝试..." -- Go 根本不支持类型转换。毫无疑问,您在谈论类型转换。
-
@Z.Kosanovic 基本上尝试了 variableName.(map[string]interface{}) 之类的东西(由于明显的原因它不起作用),甚至首先将其转换为指针,然后声明指针作为指向 map[string]interface{} 的指针。这不像我只能说,int(variableName) 他们。
标签: function dictionary go