From c786118d6bf68aa0346074c36fa5e607b6021266 Mon Sep 17 00:00:00 2001 From: _Fighter Date: Mon, 13 Dec 2021 00:15:58 +0800 Subject: [PATCH] =?UTF-8?q?2021=E5=B9=B412=E6=9C=8811=E6=97=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tree/MenuNode.go | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tree/MenuNode.go diff --git a/tree/MenuNode.go b/tree/MenuNode.go new file mode 100644 index 0000000..1042c71 --- /dev/null +++ b/tree/MenuNode.go @@ -0,0 +1,74 @@ +package main + +import "fmt" + +type treeMenuNode struct { + name string + perent, child *treeMenuNode +} + +/* +为结构体定义方法 + + +*/ +// 值接收者 +func (node treeMenuNode) print() { + fmt.Println(node.name) +} + +//指针接收者 +func (node *treeMenuNode) setName(name string) { + if node == nil { + fmt.Println(" Setting value to nil node. Ignorde.") + return + } + node.name = name +} + +// 遍历 +func (node *treeMenuNode) traverse() { + if node == nil { + return + } + node.perent.traverse() + node.print() + node.child.traverse() +} + +func main() { + + var menu treeMenuNode + + menu = treeMenuNode{name: "角色管理"} + menu.perent = &treeMenuNode{} + menu.child = &treeMenuNode{"增加用户", nil, nil} + menu.child.child = new(treeMenuNode) + + org := treeMenuNode{name: "xx研发中心"} + org.child = &treeMenuNode{"A组", nil, nil} + + nodes := []treeMenuNode{ + {name: "xxx系统"}, + {name: "测试"}, + {"系统管理", &menu, &org}, + } + fmt.Println(nodes) + + fmt.Println("调用自定义方法: ") + + menu.print() + menu.child.child.setName("自定义名称") + menu.child.child.print() + + var xMenu *treeMenuNode + xMenu.setName("测试参数") + xMenu = &org + xMenu.setName("测试参数2") + xMenu.print() + + fmt.Println(" 遍历菜单树") + menu.traverse() + org.traverse() + +} -- GitLab