• go多态


    一般人思路实现思路如果是oop的思想

    package main
    import "fmt"
    type Phone interface {
        call()
    }
    type myPhone struct {}
    func (m myPhone) call(){
        fmt.Printf("%s","this is my iphone")
    }
    type hwPhone struct {}
    func (h hwPhone) call(){
        fmt.Println("this is hwhone")
    }
    func main(){
        my:=myPhone{}
        my.call()
        hw := hwPhone{}
        hw.call()
    }

    实现思路:定一个接口,别的结构体实现我对应的方法,如果需要调用,一个结构体一个结构体对象进行调用。思路没有毛病。

    思考:如果是框架基础代码。如何更加方便的调用。以为按照上面的方法的话,要写多少结构体。第一:代码的阅读性降低.第二:代码的维护性非常差,操作性不强,所以思考所有的obj对象有没有共同的一个共性,然后抽象出来。所有下面就是多态的实现代码

    package  main
    import "fmt"
    type  Persion interface {
        process()
    }
    func Run(persion Persion){
        persion.process()
    }
    type liming struct {}
    func (l liming) process(){
        fmt.Printf("%s","i am is liming")
    }
    type gang struct {}
    func (g gang) process(){
        fmt.Printf("%s","i am is gang")
    }
    func main(){
        li:=liming{}
        g:=gang{}
        dataslice:=make([]Persion,0,1)
        dataslice = append(dataslice,li)
        dataslice = append(dataslice,g)
        for _,val:=range dataslice {
            Run(val)
        }
    }

    结论:虽然最后输出的结果都是一样的,都是要实现各自的结构体对象,但是在实际场景中,结构体要实现很多。统一使用Run()方法调用。极大的规范了代码的阅读性和维护性。

     

  • 相关阅读:
    oracle数据库根据年和月查询出表中 某年某月的数据信息
    分页问题,js之间比较不可以是字符串与字符串比较
    layer.load("试题分析中,可能需要一段时间,请稍后......",0);解析
    编译java程序
    java语言特性
    JDK
    超链接样式属性
    背景样式
    表格合并操作
    表单
  • 原文地址:https://www.cnblogs.com/zh718594493/p/16121071.html
Copyright © 2020-2023  润新知