zvvq技术分享网

使用Golang接口类型实现参数的多态化(go 接口 实

作者:zvvq博客网
导读使用 go 语言接口类型可以实现参数多态化,使函数或方法可以接受实现相同接口的不同类型参数,如示例中计算不同形状面积的函数 calculatearea。在实际应用中,接口类型可增强函数灵

应用 go 语言表达接口方式能够实现主要参数多态性化,使函数公式或方法能接受完成同样接口不一样类型参数,如示例中测算不同形状总面积的函数 calculatearea。实际应用中,接口方式能增强函数公式协调能力,完成多态性行为表现建立可扩展性架构,如分布式锁框架中根据不同存放后端的接口标准。 内容来自samhan

copyright zvvq

应用 Go 语言表达接口方式完成参数多态性化

zvvq.cn

接口方式是一种强悍的专用工具,能让程序猿界定一组方式,而且一切种类只需完成了这个方法,都可以被视为该接口方式。这种机制使我们能够将不同种类的传递数据给某一函数公式或方法,但是该函数公式或方法只能启用这种种类完成的一致方式。

zvvq

编码实例

copyright zvvq

下列代码展示了怎么使用接口方式来达到在函数公式或方法中传送不同种类的主要参数: copyright zvvq

packagemain 内容来自samhan666

import"fmt"

zvvq好,好zvvq

//界定接口方式 zvvq.cn

type Shape interface{ 内容来自zvvq,别采集哟

Area()float64

zvvq好,好zvvq

} 本文来自zvvq

//界定方形种类 内容来自zvvq

typeRectanglestruct{

zvvq.cn

Width,Heightfloat64 内容来自zvvq,别采集哟

}

copyright zvvq

//完成 Shape 接口中的方法

copyright zvvq

func(rRectangle)Area()float64{ copyright zvvq

returnr.Widthr.Height zvvq.cn

} 内容来自zvvq,别采集哟

//界定环形种类 zvvq

typeCirclestruct{ zvvq好,好zvvq

Radiusfloat64

copyright zvvq

} 内容来自zvvq,别采集哟

//完成 Shape 接口中的方法

copyright zvvq

func(cCircle)Area()float64{ zvvq.cn

returnmath.Pic.Radiusc.Radius zvvq.cn

}

内容来自samhan

//测算不同形状的总面积 内容来自zvvq,别采集哟

funcCalculateArea(sShape)float64{

zvvq

returns.Area() copyright zvvq

}

内容来自samhan666

funcmain(){

内容来自zvvq,别采集哟

//创建一个方形和一个圆形 zvvq.cn

r:=Rectangle{Width:5,Height:10}

内容来自samhan

c:=Circle{Radius:5}

本文来自zvvq

//测算方形和圆形总面积

zvvq

fmt.Println("矩形的面积:",CalculateArea(r))

zvvq

fmt.Println("圆形总面积:",CalculateArea(c))

内容来自zvvq

} 内容来自samhan666

实战案例

zvvq

实际应用中,接口方式可用作完成下列作用:

copyright zvvq

容许传到不同种类的主要参数,进而提升函数公式或方法的灵活性。依据不同的类型启用特定方式,完成多态性个人行为。建立可扩展性框架,容许轻轻松松添加新的种类和完成。比如,在分布式锁框架中,我们能定义一个存放插口来描述不同类型的存放后面(如关系数据库、NoSQL 数据库系统等),随后使用这个插口去执行 CRUD(建立、载入、升级、删掉)实际操作。那样,我们能根据不同的存放后面编写程序,而不需要变更架构自身。 内容来自zvvq,别采集哟

之上就是采用Golang接口方式完成参数多态性化的详细内容,大量欢迎关注其他类似文章!

内容来自samhan666