Golang将地图分配给接口
我想给一个接口分配一个映射,其中底层值的类型为Golang将地图分配给接口,go,Go,我想给一个接口分配一个映射,其中底层值的类型为map[string]interface type Data struct{ data interface{} } result := make(map[string]interface{}) data := Data{ data:result } details := make(map[string]interface{}) details["CreatedFor"] = "dfasfasdf" details["OwnedBy"]
map[string]interface
type Data struct{
data interface{}
}
result := make(map[string]interface{})
data := Data{
data:result
}
details := make(map[string]interface{})
details["CreatedFor"] = "dfasfasdf"
details["OwnedBy"] = "fasfsad"
如何在
data
struct中的data
接口中插入详细信息值?要将接口视为映射,需要先键入check作为映射
我对您的示例代码进行了一些修改,使其更加清晰,并添加了解释其功能的内联注释:
package main
import "fmt"
func main() {
// Data struct containing an interface field.
type Data struct {
internal interface{}
}
// Assign a map to the field.
type myMap map[string]interface{}
data := Data{
internal: make(myMap),
}
// Now, we want to access the field again, but as a map:
// check that it matches the type we want.
internalMap, ok := data.internal.(myMap)
if !ok {
panic("data.internal is not a map")
}
// Now what we have the correct type, we can treat it as a map.
internalMap["CreatedFor"] = "dfasfasdf"
internalMap["OwnedBy"] = "fasfsad"
// Print the overall struct.
fmt.Println(data)
}
这将产生:
{map[CreatedFor:dfasfasdf OwnedBy:fasfsad]}
这正是我要问的唯一一件事,就是我想提取接口的底层值,我使用类型断言StackOverflow所做的操作禁止我问如何提升它的问题ban@Himanshu完成,并根据您更新的问题调整了我的答案。