drpp5680 2019-06-03 02:54 采纳率: 0%
浏览 597
已采纳

如何声明可以在golang中接受任何类型的值的map参数? [重复]

This question already has an answer here:

For your convenience: go playground

I has a function which does not care the value type of a map parameter, so I declare it as this:

func foo(generalMap map[string]interface{}) {}

But when I call it with a specified map like this:

myMap := make(map[string]Bar)
foo(myMap)

Then the compiler error comes out: cannot use myMap (type map[string]Bar) as type map[string]interface {} in argument to foo

</div>
  • 写回答

1条回答 默认 最新

  • dongtan9518 2019-06-03 03:20
    关注

    You CANNOT do that. map[string]interface{} and map[string]Bar are two different types. You have to build a map[string]interface{} with the map[string]Bar manually.

    mapAny := make(map[string]interface{})
    for key, val := range myMap {
        mapAny[key] = val
    }
    foo(mapAny)
    

    What you need is template in C++, however, Golang doesn't have template support.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染