首页 > 解决方案 > 如何将 map[string][]byte 转换为 map[string]interface{}

问题描述

我有一个函数,除了 map[string]interface{} 类型的参数,但我有 map[string][]byte 类型的变量。我的问题是如何在 Go 中将 map[string][]byte 转换为 map[string]interface{}。

标签: go

解决方案


好的,所以要回答您的问题,可以在传递或接收不确定其类型的对象/结构的地方使用 GO 中的接口。

例如:

type Human struct {
    Name string
    Age int
    School string
    DOB time.Time
}

type Animal struct {
    Name string
    HasTail bool
    IsMamal bool
    DOB time.Time
}

func DisplayData(dataType interface{}, data byte) 

这个显示数据函数可以显示任何类型的数据,它需要数据和一个结构,在我们传入它们之前,函数都不知道这两者......数据可以是人类或动物,两者都有不同的值,可以映射取决于我们传递给函数的接口......

这意味着我们可以重用代码来显示任何数据,只要我们告诉函数我们要将数据映射到并显示的数据类型(即动物或人类......)

在您的情况下,解决方案是定义数据类型、字节中数据的结构作为结构以及您制作地图的位置而不是 map[string][]byte 尝试更改为 map[string]YourDefinedStructure

并将其传递给接受map[string]interface{}.

希望这会有所帮助,尽管您提供的数据类型作为用例和接受的函数的性质map[string]interface{}会影响所采用的方法,但这个问题相当模糊。


推荐阅读