目录

6.2 go 的继承

优质
小牛编辑
149浏览
2023-12-01

Go的继承

严格的说Go是没有继承的,Go是用组合来实现的继承。Go是一个为了开发而诞生的语言,这个和C一样,而不是为了理论研究而产生的语言。所以Go注重的是效率,而不是模式什么的理论。所以,Go它提供了一个非常值得称道的并发支持,但Go它不支持完全面向对象的。这并不意味着Go不支持面向对象,Go语言里面的OO系统做的很轻巧,学习降至最低成本。向对象让Go失去了一些OO的方便特性,可是更高的效率和多返回值多少弥补了这一点。

那些全然支持面向对象的语言一般都具有继承的功能,继承有很多好处,最简单了讲,就是能够少写代码。在Go里面并没有继承的关键字,可是能够使用Go中一种叫做"组合"的方法来实现继承。

package main

import (
    "fmt"
)

// Engine struct ...
type Engine struct {
    Run bool
}

// Start ...
func (this *Engine) Start() {
    this.Run = true
}

// Stop ...
func (this *Engine) Stop() {
    this.Run = false
}

// Car struct
type Car struct {
    Engine
}

// main ...
func main() {
    fmt.Println("Start Main func()")
    car := new(Car)
    car.Start()
    fmt.Println(`Run status:`, car.Run)
    car.Stop()
    fmt.Println(`Run status:`, car.Run)
}