Go语言中面向对象的三大特性之继承的理解

Go没有传统意义上的继承,而是通过组合实现代码复用。

举例说明:

首先定义一个引擎:

Go 复制代码
// 引擎
type Engine struct {
    Power    int    // 马力
    FuelType string // 燃油类型
}
复制代码
func (e *Engine) Start() {
    fmt.Printf("%d马力 %s 引擎启动\n", e.Power, e.FuelType)
}

func (e *Engine) Stop() {
    fmt.Println("引擎关闭")
}

其次,定义一个汽车:

复制代码
// 汽车(组合引擎)
type Car struct {
    Brand    string
    Color    string
    Engine   // 嵌入 Engine,汽车"拥有"一个引擎
}

func (c *Car) Drive() {
    fmt.Printf("%s %s 颜色的汽车正在行驶\n", c.Brand, c.Color)
    c.Engine.Start()  // 调用嵌入引擎的方法
}

func main() {
    car := Car{
        Brand:  "比亚迪",
        Color:  "红色",
        Engine: Engine{
            Power:    200,
            FuelType: "电动",
        },
    }
    
    car.Drive()        // 输出:比亚迪 红色 颜色的汽车正在行驶
    car.Engine.Start() // 输出:200马力 电动 引擎启动
    car.Stop()         // 引擎直接暴露,可以直接调用
}
相关推荐
玉宇夕落14 小时前
背单词项目一:融会贯通:从零构建"单词大师"后台——Next.js + Supabase + Drizzle 全栈开发实战
后端
quantdash_cc14 小时前
量化数据源怎么选:稳定性、实时性和数据完整性到底该如何权衡?
开发语言·python·数据分析·量化交易·股票数据·quantdash
橙序员小站14 小时前
从 Demo 到生产:Agent Harness 如何把 AI 真正“接”进项目
后端·aigc·ai编程
萧瑟余晖14 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言
她的男孩14 小时前
一个开源低代码框架的协作 SPI 是怎么设计的 ForgeAdmin 拆解 + 实战接入新平台
后端·算法·架构
蓝山61615 小时前
Python 字典(Dictionary)完全指南:从入门到实战
后端
foggyprojects15 小时前
在 DeepSeek Harness 里跑通 Foggy:从安装插件到第一次问数
后端
张文是假的啊15 小时前
Java | record | Controller逻辑
java·开发语言
不甘先生15 小时前
Go 中 type、方法与指针接收者:从 str_name.Name() 看懂 Go 的类型系统
开发语言·后端·golang
quantdash_cc16 小时前
Python 股票 K 线数据质量校验:字段、缺失值、重复行和价格异常
开发语言·python·数据分析·量化交易·股票数据·quantdash