Oop golang-树结构抽象
我试图编写一个树结构,其中每个节点都应该有一个id和父ref/id参数 通过扩展节点结构,您应该能够添加一些自定义参数(如标题、图标、颜色…)。它应该是内联的,并在以后插入mgo 您可以在下面或此处找到代码: 我试图避免向nodeExtension结构添加方法,并通过node结构共享它。但是,CreateNode方法只获取节点数据,而不获取包装结构 如何在不丢失自定义参数的情况下实现该算法(本例中的描述)有何想法 谢谢Oop golang-树结构抽象,oop,go,Oop,Go,我试图编写一个树结构,其中每个节点都应该有一个id和父ref/id参数 通过扩展节点结构,您应该能够添加一些自定义参数(如标题、图标、颜色…)。它应该是内联的,并在以后插入mgo 您可以在下面或此处找到代码: 我试图避免向nodeExtension结构添加方法,并通过node结构共享它。但是,CreateNode方法只获取节点数据,而不获取包装结构 如何在不丢失自定义参数的情况下实现该算法(本例中的描述)有何想法 谢谢 package main import ( "fmt" ) ty
package main
import (
"fmt"
)
type item struct {
ID string
}
type node struct {
item `bson:,inline`
Parent string
}
func (t *node) CreateNode() {
fmt.Printf("Node: %+v\n", t)
}
type nodeExtension struct {
node `bson:,inline`
Description string
}
func main() {
i := &nodeExtension{
node: node{
item: item{
ID: "1",
},
Parent: "",
},
Description: "Root node",
}
i.CreateNode()
i = &nodeExtension{
node: node{
item: item{
ID: "2",
},
Parent: "1",
},
Description: "Another node",
}
i.CreateNode()
}
// output:
// Node: &{item:{ID:1} Parent:}
// Node: &{item:{ID:2} Parent:1}
// both without description :/
您的CreateNode()
函数在一种类型的节点上运行,该节点没有说明
字段。
将签名更改为:
func(t*nodeExtension)CreateNode()
将按您希望的方式在此场景中操作:它将打印出整个nodeExtension
struct:
我不完全确定您想在这里实现什么,但是可能有一个node
类型的接口,它实现了String()
方法,然后像simpleNode
和extendedNode
这样的接口,您可以看看吗