程序员技术栈

Go语言入门第三节 Go 语言面向对象机制

2019-05-31  本文已影响2人  団长大人

Go语言面向对象编程

Go语言的面相对象和主流语言有很大的不同,如Go 语言里是不支持继承,Go语言的接口实现也不太一样

1. 数据和行为的封装

2. 接口

3. 扩展与复用

用于Go不支持继承,因此Go语言的扩展也变成了Go语言里争议最大的部分

4. 多态

下面是一个多态的例子

//=========接口定义==========
type Programmer interface {
    writeCode() string
}

//=========接口实现==========
type GoProgrammer struct {

}

func (g *GoProgrammer) writeCode() string {
    return "fmt.println(\"hello world\")"
}

//======新的Programmer类型实现=====
type JavaProgrammer struct {

}

func (j *JavaProgrammer) writeCode() string {
    return "System.out.println(\"hello world\");"
}

//=======一个普通的方法,传入Programmer类型的数据
func work(programmer Programmer)  {
    fmt.Printf("Type:%T,Code:%s\n",programmer,programmer.writeCode())
}

//======程序入口======
func TestPolymorphism(t *testing.T) {
    java := new(JavaProgrammer)
    goo := new(GoProgrammer)
    work(java)
    work(goo)
}
上一篇 下一篇

猜你喜欢

热点阅读