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)
}