Go语言学习笔记(8)面向对象

package main

import "fmt"

func main() {
	//定义treeNode结构体
	var root treeNode

	root = treeNode{value:3}
	fmt.Println(root)
	fmt.Println()

	root.left = &treeNode{}
	root.left.print()
	fmt.Println()

	root.right = &treeNode{5,nil,nil}
	root.right.print()
	fmt.Println()

	root.right.left = new(treeNode)
	root.right.left.print()
	fmt.Println()

	root.left.right = createValue(2)
	root.left.right.print()
	fmt.Println()



	root.right.left.checkValue(4)
	root.right.left.print()
	fmt.Println()

	//var roots *treeNode
	//roots.setValue(200)
	//roots = &root
	//roots.setValue(300)
	//roots.print()

	root.traverse()

}


//定义结构体 struct
type treeNode struct {
	value int
	left, right *treeNode
}

//为结构体定义方法 打印
func (node treeNode) print() {
	fmt.Print(node.value)
}

func (node *treeNode) checkValue(value int) {
	node.value = value
}
//添加tree
func addValue(value int) *treeNode{
	return &treeNode{value:value}
}
//修改
func (node *treeNode) setValue(value int) {
	if node == nil {
		fmt.Println("nil也可以作为指针")
		return
	}
	node.value = value
}

func createValue(value int ) *treeNode{
	return &treeNode{value:value}
}

/**
 *排序
 */
func (node *treeNode) traverse() {
	if (node == nil) {
		return
	}

	//左子值
	node.left.traverse()
	node.print()
	node.right.traverse()
}


{3 <nil> <nil>}

0
5
0
2
4
02345
1:nil指针也可以调用方法
2:要改变内容必须使用指针接受者
3:结构过大也考虑使用指针接受者
4:建议一致性:如果是指针接受者,最好都是指针接受者
5:值接受者是go语言特有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值