如果你沉迷于Python的简约代码风格,同时痴迷于C指针的特性,那么你会瞬间爱上Go。Python的代码风格简约,但作为一门动态语言,性能优化需要花费不少的努力,内存管理也存在麻烦。
Go语言的代码风格简约,性能强大,有着如指针、接口等诸多迷人的特性,其中它的面向对象形式也很独特。
二、Go面向对象的实现 Go的面向对象主要依赖于struct
结构体,首先自定义结构体(相当于一个自定义类,在Go中作为一个命名类型)的属性,再通过向结构体添加方法集(成员函数)的形式实现面向对象。
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条)