GOLANG 封装与扩展

panzhongke · · 679 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

# 封装 ```go type TreeNode struct { Left, Right *TreeNode Value int } //值接收者和指针接收者和传参数类型没有什么区别 //如果要改变内容或内容比较大,建议用值接收者 func (root *TreeNode) traverse() { if root == nil { return } root.Left.traverse() fmt.Print(root.Value, " ") root.Right.traverse() } func createTreeNode(v int) *TreeNode { return &TreeNode{Value: v} } func main() { var root TreeNode root = TreeNode{Value: 3} root.Left = createTreeNode(4) root.Right = &TreeNode{Value: 5} root.Left.Right = createTreeNode(2) root.Right.Left = createTreeNode(8) root.traverse() } ``` # 扩展已有类型 ```go type TreeNode struct { Left, Right *TreeNode Value int } //值接收者和指针接收者和传参数类型没有什么区别 //如果要改变内容或内容比较大,建议用值接收者 func (root *TreeNode) traverse() { if root == nil { return } root.Left.traverse() root.print() root.Right.traverse() } func (root *TreeNode) print() { fmt.Print(root.Value, " ") } type myTreeNode struct { node *TreeNode } func (myNode *myTreeNode) postOrder() { if myNode == nil || myNode.node == nil { return } left := myTreeNode{myNode.node.Left} right := myTreeNode{myNode.node.Right} left.postOrder() right.postOrder() myNode.node.print() } func createTreeNode(v int) *TreeNode { return &TreeNode{Value: v} } func main() { var root TreeNode root = TreeNode{Value: 3} root.Left = createTreeNode(4) root.Right = &TreeNode{Value: 5} root.Left.Right = createTreeNode(2) root.Right.Left = createTreeNode(8) root.traverse() fmt.Println() myroot := myTreeNode{&root} myroot.postOrder() } ```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

679 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传