2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > go语言学习(3)面向对象 结构体和方法

go语言学习(3)面向对象 结构体和方法

时间:2019-06-10 14:37:42

相关推荐

go语言学习(3)面向对象 结构体和方法

感觉每种语言都是其他的语言的一些交集,看见go就有种kotlin和C的孩子的感觉,虽然我并不清楚他们之间的借鉴关系

go语言仅支持封装,不支持继承和多态

go语言只有struct没有class

go语言的结构的定义和C++类似

type treeNode struct {value intleft, right *treeNode}

为结构定义方法:

func (node treeNode) print() { //接收者相当于this,这个方法相当于kotlin的扩展方法fmt.Print(node.value, " ")}

显示定义和命名方法接收者

使用指针作为方法接受者

func (node *treeNode) setValue(value int) {node.value = value}

只有指针才可以改变结构内容

nil指针也可以调用方法!

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

也就是通过这样的方式可以解决java中最常见的空指针异常的问题,这个问题是一个大问题,所以现在我尽可能使用kotlin开发android应用,java开发过程中的空指针问题真的是一种很麻烦的问题

常见操作(二叉树的中序遍历操作)

//中序遍历操作,基本操作func (node *treeNode) traverse() {if node == nil {return}node.left.traverse()node.print()node.right.traverse()}

值接收者和指针接收者的使用

1.要改变内容必须使用指针接收者

2.结构过大也考虑指针接收者

3.一致性:如有指针接收者,最好都是指针接收者

4.值接受者是go语言特有的

5.值/指针均可接收值/指针,并不会改变调用的方式,go语言在这方面很智能

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。