ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【182】4-1结构体和方法

2022-03-19 16:00:28  阅读:99  来源: 互联网

标签:node right treeNode 方法 value 182 print root 结构


package main

import "fmt"

type treeNode struct {
	value int
	//*treeNode left,right 是两个指针类型,但是定义指针,为什么要用treeNode 我有点难理解,
	// 好像就是用户* +这个结构体的名字就可以表示指针
	left, right *treeNode
}

// 在方法之前 加括号,跟其他的语言不一样,这叫做 接收者 (node treeNode),这个node参数是传值的,go语言所有参数都是传值的,调用的时候使用 root.print(),
// 如果写成print(node treeNode) 这种形式的,那么在main方法中调用的时候需要用 print(root)
func (node treeNode) print() {
	fmt.Print(node.value," ")
}

func (node *treeNode) setValue(value int) {
	if node == nil {
		fmt.Println("Setting value to nil node . Ignored")
		return
	}
	node.value = value
}

func (node *treeNode) traverse() {
	if node == nil {
		return
	}
	node.left.traverse()
	node.print()
	node.right.traverse()
}


//使用自定义工厂函数
func createNode(value int)  *treeNode{
	//C++ 里面好像不能返回局部变量,但是在go语言里面是可以返回局部变量的
	return &treeNode{value:value}
	//C++中我们的局部变量是在栈上的,
}

func main() {
	var root treeNode
	root = treeNode{value : 3}
	root.left = &treeNode{}
	root.right = &treeNode{5,nil,nil}
	root.right.left = new(treeNode)
	root.left.right = createNode(2);

	//root.print()
	root.right.left.setValue(4)
	//root.right.left.print()
	//fmt.Println()

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

	root.traverse()

}

标签:node,right,treeNode,方法,value,182,print,root,结构
来源: https://blog.csdn.net/weixin_39534472/article/details/123596432

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有