zvvq技术分享网

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

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

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

内容来自samhan

应用 Go 语言表达接口方式完成参数多态性化 内容来自samhan666

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

zvvq.cn

编码实例 zvvq.cn

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

本文来自zvvq

packagemain 内容来自samhan

import"fmt" 内容来自zvvq,别采集哟

//界定接口方式

copyright zvvq

type Shape interface{

内容来自samhan

Area()float64 zvvq好,好zvvq

} 内容来自samhan

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

typeRectanglestruct{

zvvq.cn

Width,Heightfloat64

本文来自zvvq

}

zvvq.cn

//完成 Shape 接口中的方法 copyright zvvq

func(rRectangle)Area()float64{ 内容来自zvvq

returnr.Width*r.Height zvvq

}

内容来自zvvq

//界定环形种类

内容来自samhan

typeCirclestruct{ 本文来自zvvq

Radiusfloat64 zvvq好,好zvvq

}

内容来自samhan

//完成 Shape 接口中的方法 内容来自zvvq,别采集哟

func(cCircle)Area()float64{ 内容来自zvvq,别采集哟

returnmath.Pi*c.Radius*c.Radius

copyright zvvq

} 内容来自zvvq,别采集哟

//测算不同形状的总面积 内容来自zvvq

funcCalculateArea(sShape)float64{ 本文来自zvvq

returns.Area() 内容来自zvvq

} zvvq

funcmain(){ zvvq.cn

//创建一个方形和一个圆形 内容来自zvvq

r:=Rectangle{Width:5,Height:10} 内容来自zvvq

c:=Circle{Radius:5}

内容来自samhan666

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

copyright zvvq

fmt.Println("矩形的面积:",CalculateArea(r)) 内容来自zvvq

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

zvvq好,好zvvq

}

内容来自samhan666

实战案例 本文来自zvvq

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

内容来自zvvq,别采集哟

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

本文来自zvvq

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

copyright zvvq