我试图编写一个树结构,其中每个节点应该有一个id和父ref / id参数。
通过扩展节点结构,您应该能够添加一些自定义参数(如标题,图标,颜色......)。它应该内嵌并随后插入mgo ...
您可以在下方或此处找到代码:https://play.golang.org/p/bbvs2iM3ri
我试图避免向nodeExtension结构添加方法并通过节点结构共享它。但是,CreateNode方法只获取节点数据,而不是包装结构。
如何在不丢失自定义参数的情况下实现此算法的任何想法(在本例中为描述)?
感谢
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 :/
答案 0 :(得分:1)
您的CreateNode()
函数使用node
类型,但没有Description
字段。
将签名更改为:
func (t *nodeExtension) CreateNode()
将在这种情况下运行您想要的方式:它将打印出整个nodeExtension
结构:
https://play.golang.org/p/nLxblNySB9
我不完全确定你在这里尝试完成的任务,但可能有一个node
类型的接口,它实现了String()
方法,然后就像{ {1}}和simpleNode
会是您可以看到的内容吗?