本文始发于个人公众号:TechFlow,原创不易,求个关注
今天是golang专题的第9篇文章,我们一起来看看golang当中的面向对象的部分。
在现在高级语言当中,面向对象几乎是不可或缺也是一门语言最重要的部分之一。golang作为一门刚刚诞生十年的新兴语言自然是支持面向对象的,但是golang当中面向对象的概念和特性与我们之前熟悉的大部分语言都不尽相同。比如Java、Python等,相比之下, golang这个部分的设计非常得简洁和优雅(仁者见仁),所以即使你之前没有系统地了解过面向对象,也没有关系,也一定能够看懂。
常见的面向对象的部分,比如继承、构造函数、析构函数,这些内容在golang当中统统没有,因此整体的学习成本和其他的语言比起来会更低一些。
struct
在golang当中没有类的概念,代替的是结构体(struct)这个概念。我们可以给结构体类型定义方法,为了表明该方法的适用对象是当前结构体,我们需要在方法当中定义接收者,位于func关键字和方法名之间。
我们一起来看一个例子:
type Point struct {
x int
y int
}
func (p Point) Dis() float64 {
return math.Sqrt(float64(p.x*p.x + p.y*p.y))
}
在上面这段代码当中我们定义了一个叫做Point的结构体,以及一个面向这个结构体的方法Dis。我们一个一个来看它们的语法。
对于结构体来说,我们通过type关键字定义。在golang当中type关键字的含义是定义一个新的