gpt4 book ai didi

oop - golang - 树结构抽象

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:22 25 4
gpt4 key购买 nike

我正在尝试编写一个树结构,其中每个节点都应该有一个 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 :/

最佳答案

您的 CreateNode() 函数在一种类型的 node 上运行,它没有 Description 字段。将签名更改为:
func (t *nodeExtension) CreateNode()
将在这种情况下按您希望的方式运行:它将打印出整个 nodeExtension 结构: https://play.golang.org/p/nLxblNySB9

我不完全确定你在这里试图完成什么,但可能有一个 node 类型的接口(interface),它实现了一个 String() 方法,然后有像 simpleNodeextendedNode 这样的东西你可以看看吗?

关于oop - golang - 树结构抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44870902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com