我最近遇到了一个通过直接索引进行图形处理的库,即graph[key]
,我有一个 node 树,它的子 node 位于某个属性node.childs[key]
下.
我想知道是否有一种方法可以定义一个类型,这样一个属性就可以通过直接键映射来访问,比如node[key]
可以映射到node.childs[key]
.在定义新类型时,有没有办法做到这一点?
我最近遇到了一个通过直接索引进行图形处理的库,即graph[key]
,我有一个 node 树,它的子 node 位于某个属性node.childs[key]
下.
我想知道是否有一种方法可以定义一个类型,这样一个属性就可以通过直接键映射来访问,比如node[key]
可以映射到node.childs[key]
.在定义新类型时,有没有办法做到这一点?
不,你不可能做你想做的事.规范不允许这样做.Spec: Index expressions:
形式的主要表达式
a[x]
表示数组的元素,指向数组、切片、字符串或映射
a
的指针由x
索引.值x
分别称为index或map key.以下规则适用:第
a
页,共array type页A
页:[…]对于pointer到数组类型中的
a
:[…]第
a
页,共slice type页S
页:[…]第
a
页,共string type页:[…]第
a
页,共map type页M
页:[…]第
a
页,共type parameter type页P
页:[…]Otherwise 100 is illegal.
只有这些列出的类型是可索引的,没有其他类型.甚至不能更改索引运算符(you can't override it)的含义.