Go语言面向对象编程(1)-实现原理

Go语言面向对象编程(1)-实现原理,第1张

Go面向对象编程 一、前言

​ 如果你沉迷于Python的简约代码风格,同时痴迷于C指针的特性,那么你会瞬间爱上Go。Python的代码风格简约,但作为一门动态语言,性能优化需要花费不少的努力,内存管理也存在麻烦。

​ Go语言的代码风格简约,性能强大,有着如指针、接口等诸多迷人的特性,其中它的面向对象形式也很独特。

二、Go面向对象的实现

​ Go的面向对象主要依赖于struct结构体,首先自定义结构体(相当于一个自定义类,在Go中作为一个命名类型)的属性,再通过向结构体添加方法集(成员函数)的形式实现面向对象。

1. struct结构体

struct类型是Go语言自定义类型的普遍形式,是Go语言类型的扩展的基石,也是Go语言面向对象承载的基础。

struct类型字面量的声明格式如下:

type xxx struct {
    val1 type1
    val2 type2
}
2. 类方法

​ Go语言的类型方法是一种对类型行为的封装。Go的类方法非常纯粹,可以看成特殊类型的函数。

3.一个实例–链表

​ 通过Go语言的面向对象实现链表。

(1)自定义链表节点,包含值和指向下一节点的节点指针。

type Node struct {
	 val int
	 nxt *Node
}

(2)为类型封装方法,如添加遍历打印链表节点值的方法。

​ 其中head相当于类的实例自身(类似于python的self,C++的this)

func (head Node) Print(){  // 为Node类型添加的方法。
	for temp:= &head; temp != nil; temp = temp.nxt{
		fmt.Print(temp.val, " ")
	}
	fmt.Println()
}
4.注意事项

(1)对类型方法的封装需要在同一个包完成,如上面的Node的定义和Print()方法的实现需要在同一个包中定义。

(2)类型方法的调用存在自动转换的机制,如值调用和指针调用的转换,具体会在下周的文章讲述,敬请期待…

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存