Go语言面向对象编程(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)类型方法的调用存在自动转换的机制,如值调用和指针调用的转换,具体会在下周的文章讲述,敬请期待…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值