我有这样一张 map :

Map := make(map[string]interface{})

该映射应该包含从字符串到对象数组的映射.数组可以是不同类型的,如[]Users[]Hosts.我填充了此数组:

TopologyMap["Users"] = Users_Array
TopologyMap["Hosts"] = Hosts_Array

但当我试图从中提取元素时:

Map["Users"][0]

它会给出一个错误: (type interface {} does not support indexing)

我怎么才能克服它呢?

推荐答案

您必须显式地将接口{}转换为预期类型的片段才能实现它.比如:

package main
    
import "fmt"
    
type Host struct {
    Name string
}

func main() {
    Map := make(map[string]interface{})
    Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}}
    
    hm := Map["hosts"].([]Host)
    fmt.Println(hm[0])
}

Playground link

Go相关问答推荐

如何在jsonrpc服务器的服务器端捕获错误?

使用GO从RDPMC获得价值

为什么Slices包中的函数定义Slice参数的类型参数?

Go SQLCMD比Windows本机版本慢吗?

无法在32位计算机上运行Golang应用程序

Golang Fiber Render - 将数据发送到多个布局

仅使用公共 api 对 alexedwards/scs 进行简单测试

使用 OpenTelemetry 统一不同服务的范围

使用goqu无法获取响应

如何在 Go 中将 int 转换为包含 complex128 的泛型类型?

Secrets Manager Update Secret - Secret String 额外的 JSON 编码

从给定顶点查找图形中所有闭合路径的算法

泛型:实现嵌套接口

如何在自定义验证函数中获取 struct 名称

处理程序后访问 HTTP 请求上下文

如何在 Unmarshal 中使用泛型(转到 1.18)

在 VSCode 中使用命令行参数调试 Go 测试

如何使用 context.WithCancel 启动和停止每个会话的心跳?

从 map 返回空数组而不是空字符串数组

如何在 Prometheus 中正确检测区域和环境信息?