Golang的面向对象

在golang中,面向对象一直是一个纠纷,怎么说好呢。就是官网说没有面向对象这个概念,可是又给出了类似面向对象的概念。

和其他语言不同Golang只有接口和结构体分别为 interface 和 struct

我们以javascript es6为例子做对比


class ClassName {
 public name; // 成员属性
}

我们一个类有哪些属性,一般的语言和以上的写法是差不多的。可是到了golang的话,就有点变味了。


type ClassName struct {
 name string;
}

我们有时候还需要在类中添加行为(方法)。我们在其他语言通常是

class ClassName {
 public name; // 成员属性
 public setName(name){}
}

和在golang的写法,你先要定义一个结构体,然后再结构体外面定义行为方法

type ClassName struct {
 name string;
}
func (c *ClassName) setName (name string) {}
func main(){
 c := ClassName{}
 c.setName("M")
}

我们有需要还需要定义接口来实现多态,在golang中,实现接口并没有强制约束,只要你实现了我的方法,我就认为你实现了我的接口

type Foo interface{
 qux()
}
type Bar struct {}
type Baz struct {}
func (b Bar) qux() {}
func (b Baz) qux () {}
func main() {
 var f Foo
 f = Bar{}
 f = Baz {}
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容