首页 > 后端开发 > Golang > 如何在 Go 中索引到接口{}映射?

如何在 Go 中索引到接口{}映射?

Patricia Arquette
发布: 2024-12-18 11:50:12
原创
521 人浏览过

How to Index into an interface{} Map in Go?

如何在 Go 中索引接口映射:解决“type interface {} 不支持索引”

在 Go 中,尝试索引具有特定键的接口{}映射可能会导致错误“类型接口{}不支持索引”。当尝试从映射中访问元素时会出现这种情况,其中值存储为接口,并且这些值的具体类型未知。

克服此错误的一种方法是显式对从使用您期望的值的切片类型进行映射。例如,考虑以下代码片段,其中名为 TopologyMap 的映射包含从字符串到对象数组的映射:

Map := make(map[string]interface{})
Map["Users"] = Users_Array
Map["Hosts"] = Hosts_Array
登录后复制

要从此映射中检索元素,您可以使用以下语法,但它会导致“类型接口 {} 不支持索引”错误:

Map["Users"][0]
登录后复制

要解决此问题,请使用类型断言将接口值显式转换为其所需的类型。下面的示例演示了如何对字符串和主机切片的映射执行此操作:

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])
}
登录后复制

在此示例中,我们将存储在“hosts”键下的值显式类型转换为主机切片宿主对象,使得访问各个宿主元素成为可能。

通过使用这种方法,您可以有效地索引 interface{} 映射并检索您需要的特定值,即使它们的类型未知在编译时。

以上是如何在 Go 中索引到接口{}映射?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板