go的父子类的简单使用

server/2024/10/20 13:30:19/

简介

go的父子类,感觉类似于基类和基于基类的扩展类,然后子类基于父类做一些用法的扩充,有些类似于抽象类和其子类的实现

代码如下

package parentchildclassimport "fmt"type WriteInterface interface {Write()
}type WriteParent struct {name string
}func (w *WriteParent) Write() {fmt.Println("parent")
}// 可以考虑基于泛型或者抽象接口做一些数据校验
func (w *WriteParent) CheckData() {fmt.Println("check data")
}type Child struct {*WriteParent
}func (c *Child) Write() {c.CheckData()fmt.Println("child")
}

测试用例

package parentchildclassimport "testing"func TestChild_Write(t *testing.T) {child := &Child{&WriteParent{}}child.Write()
}

输出结果

=== RUN   TestChild_Write
check data
child
--- PASS: TestChild_Write (0.00s)
PASS

总结

可以看到父类的函数被子类给覆盖掉了,类似于这种用法,可以在父类上定义好公共方法(抽象方法)和一些被实现的可以被子类调用的非抽象方法(主要负责数据的校验和处理等逻辑),然后子类自定义实现公共方法,然后调用父类的非抽象方法对数据进行校验和抽离等逻辑。

这也应该算是go里面的父子类的一个典型应用吧。


http://www.ppmy.cn/server/113542.html

相关文章

1-19 平滑处理——双边滤波 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 cv2.bilateralFilter函数用于对图像进行双边滤波。双边滤波是一种保持边缘的平滑技术,常用于图像去噪声和增强图像的细节。函数的四个参数如下: 三、运行现象 四、完整工程贴出 一、提前准备 1、树莓派4B 及 64位系统…

【iOS】折叠cell

折叠cell 前言实现原理代码实现原理讲解代码展示 前言 暑假在仿写3G share时使用到了折叠cell,故而现在来总结一下折叠cell,如有不足,还望指正。 实现原理 在OC中,scrollview是tableview的父类,要想实现折叠cell的效…

Redis的设计哲学和实现方式

‌ Redis是一个可用性和分区容忍性优先的系统。 Redis的设计和实现强调了高可用性和高性能,而不是严格的数据一致性。 这一点可以从Redis的分布式设计、数据压缩支持、以及异步IO机制等方面看出。 ‌分布式设计与数据一致性‌:Redis的分布式设计中采用了…

rust feature 简介

Rust 的 feature 是一种机制,用于在编译时选择性地启用或禁用代码的某些部分。通过 feature,你可以在 Cargo.toml 中定义哪些功能需要启用,并在代码中通过条件编译来控制代码的编译与否。下面是 feature 机制的详解: 1. 基本概念…

一文梳理RAG(检索增强生成)的现状与挑战

一 RAG简介 大模型相较于过去的语言模型具备更加强大的能力,但在实际应用中,例如在准确性、知识更新速度和答案透明度方面,仍存在不少问题,比如典型的幻觉现象。因此,检索增强生成 (Retrieval-Augmented Generation, …

Maven快速上手使用指南的笔记

Maven Mini Guides Configuring for Reproducible Builds 使用Maven实现重复构建。 检查当前使用的插件的版本。 mvn artifact:check-buildplan修改pom.xml&#xff0c;增加如下配置&#xff0c;显式指定project.build.outputTimestamp的取值&#xff1a; <properties>…

ubantu安装mysql + redis数据库并使用C/C++操作数据库

mysql 安装mysql ubuntu 安装 MySql_ubuntu安装mysql-CSDN博客 Ubuntu 安装 MySQL 密码设置_ubuntu安装mysql后设置密码-CSDN博客 service mysql restart1 C/C连接数据库 C/C 连接访问 MySQL数据库_c mysql-CSDN博客 ubuntu安装mysql的c开发环境_ubuntu 搭建mysql c开发…

2024 数学建模高教社杯 国赛(A题)| “板凳龙”舞龙队 | 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用等距螺线&#xff0c;多目标规划等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量身打造创新解决方案。小秘籍团队&#xff0c;始终引领着建模问题求解的风潮。 抓紧小秘籍&am…