我最近遇到了一个通过直接索引进行图形处理的库,即graph[key],我有一个 node 树,它的子 node 位于某个属性node.childs[key]下.

我想知道是否有一种方法可以定义一个类型,这样一个属性就可以通过直接键映射来访问,比如node[key]可以映射到node.childs[key].在定义新类型时,有没有办法做到这一点?

推荐答案

不,你不可能做你想做的事.规范不允许这样做.Spec: Index expressions:

形式的主要表达式

a[x]

表示数组的元素,指向数组、切片、字符串或映射a的指针由x索引.值x分别称为indexmap key.以下规则适用:

a页,共array typeA页:[…]

对于pointer到数组类型中的a:[…]

a页,共slice typeS页:[…]

a页,共string type页:[…]

a页,共map typeM页:[…]

a页,共type parameter typeP页:[…]

Otherwise 100 is illegal.

只有这些列出的类型是可索引的,没有其他类型.甚至不能更改索引运算符(you can't override it)的含义.

Go相关问答推荐

Golang ==错误:OCI运行时创建失败:无法启动容器进程:exec:./" bin:stat./" bin:没有这样的文件或目录:未知

如何在AWS SDK Go v2 STS上正确使用重试

如何修复Go中调用GetRawInputDeviceInfA Windows API函数时的错误?

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

提供的client_secret与此帐户上任何关联的SetupIntent都不匹配

使用Goldmark在golang中添加ChildNode会导致堆栈溢出

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

在 Go sync.Map 中,为什么这部分实现不一致或者我误解了什么?

由于 main.go 文件中的本地包导入导致构建 docker 容器时出错

将 struct 转换为 CSV 字符串

类型/ struct 函数的 GoDoc 示例函数

Get 请求在 Thunder 客户端/Postman 中返回数据,但在 Golang 代码中给出空白数据

从Go中的随机日期开始以天为单位获取时间

Go Colly 如何找到请求的元素?

枚举的 Golang 验证器自定义验证规则

Golang:隐式 struct 匹配

关系不存在 GORM

具有近似约束的函数值导致的实例化失败

如何在眼镜蛇(golang)中将标志作为参数传递?

如何获得Ent中数字列的总和