提交 c786118d 编写于 作者: _Fighter's avatar _Fighter

2021年12月11日

上级 8ada7d06
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()
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册