Go语言GO语言系列

GO语言初级学习之代码案例06 (面向对象)

2018-08-08  本文已影响23人  大爬虫Shalom

@(go语言 黑马)[GO语言]

实现计算器

package main

import "fmt"

type Opt struct { //父类结构体,为了方便接口的调用,把加法减法放在不同的子类中;
    num1 int
    num2 int
}
type Addopt struct { //加法结构体
    Opt
}
type Subopt struct { //减法结构体
    Opt
}

//定义接口
type Jiekou interface {
    Calculate() int
}

//给加减法结构体绑定方法
func (a *Addopt) Calculate() int {
    return a.num1 + a.num2
}
func (b *Subopt) Calculate() int {
    return b.num1 - b.num2
}

//定义多态
func poly(jie Jiekou) (value int) {
    value = jie.Calculate()
    return
}

type factory struct { //工厂的作用就是整合所有的方法,判断输入的命令,并根据判断结果分配不同的方法
}

func (fac *factory) Result(num1 int, num2 int, synbol string) (value int) {
    var jie Jiekou //最终还是要通过接口实现方法
    //通过接口实现,必须定义接口变量,不同的接口变量对应不同的方法
    //接口变量被赋值为能够实现该接口的结构体变量,调用绑定该结构体的方法
    switch synbol { //通过switch给接口变量赋不同的值
    case "+":
        jie = &Addopt{Opt{num1, num2}}
    case "-":
        jie = &Subopt{Opt{num1, num2}}
    }
    value = poly(jie) //利用多态调用接口,并输出返回值
    return
} //这是绑定在factory的方法

func main() {
    var fac factory
    value := fac.Result(12, 23, "+")
    fmt.Println(value)
}
上一篇下一篇

猜你喜欢

热点阅读