为了您的方便:去游乐场
我有一个函数不关心映射参数的值类型,所以我将其声明为:
func foo(generalMap map[string]interface{}) {}
但是当我用指定的地图调用它时,如下所示:
myMap := make(map[string]Bar)
foo(myMap)
Run Code Online (Sandbox Code Playgroud)
然后编译器就报错了:
cannot use myMap (type map[string]Bar) as type map[string]interface {} in argument to foo
你不能这样做。map[string]interface{}和map[string]Bar是两种不同的类型。您必须手动构建map[string]interface{}一个map[string]Bar。
mapAny := make(map[string]interface{})
for key, val := range myMap {
mapAny[key] = val
}
foo(mapAny)
Run Code Online (Sandbox Code Playgroud)
你需要的是C++中的模板,但是Golang没有模板支持。