博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初学Golang:多态性的实现
阅读量:6225 次
发布时间:2019-06-21

本文共 959 字,大约阅读时间需要 3 分钟。

Code Speaks:

 

package mainimport "fmt"import "math"/** * 定义几何接口 */type geometry interface {    area() float64    perim() float64}/** * 定义矩形结构 */type rect struct {    width, height float64}/** * 定义圆形结构 */type circle struct {    radius float64}/** * 实现矩形面积方法 */func (r rect) area() float64 {    return r.width * r.height}/** * 实现矩形周长方法 */func (r rect) perim() float64 {    return 2*r.width + 2*r.height}/** * 实现圆形面积方法 */func (c circle) area() float64 {    return math.Pi * c.radius * c.radius}/** * 实现圆形周长方法 */func (c circle) perim() float64 {    return 2 * math.Pi * c.radius}/** * 接口做参数实现计算方法 * @param  g geometry      接口参数 * @return  */func measure(g geometry) {    fmt.Println(g)    fmt.Println(g.area())    fmt.Println(g.perim())}/** * main方法调用 * @return  */func main() {    r := rect{width: 3, height: 4}    c := circle{radius: 5}    /**     * 多态调用     */    measure(r)    measure(c)}

 

1.Golang中实现接口中定义的方法即被视为实现了接口,不需显示声明实现某接口

2.Golang的接口更大的作用是声明方法集合,而非类型约束

转载地址:http://wwyna.baihongyu.com/

你可能感兴趣的文章
Python3.4 12306 2015年3月验证码识别
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
Io流的概述
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
JS 对象机制深剖——new 运算符
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
百度页面分享插件源代码
查看>>
《别做正常的傻瓜》的一些读书心得
查看>>
作业:实现简单的shell sed替换功能和修改haproxy配置文件
查看>>
spring配置多数据源问题
查看>>
Altium 拼板方法以及 注意的 地方
查看>>
简明Linux命令行笔记:tail
查看>>
SQL PLUS远程连接
查看>>
2000条你应知的WPF小姿势 基础篇<15-21>
查看>>
PMP考试的过与只是
查看>>
java 监控 收集资料3(收集中)
查看>>