• golang 接口interface 多态


    多态就是多重形态。

    案例: 

    收入的案例:

    package main
    
    import (
    	"fmt"
    )
    
    type Income interface {
    	calculate () float64
    	source() string
    
    }
    //固定账单项目
    type FixedBuilding struct {
    	ProjectName string
    	biddedAcount float64
    
    }
    // 定时和材料项目
    type TimeAndMetiarl struct {
    	ProjectName string
    	WorkHours int64 
    	WorkRate float64
    
    }
    
    func (f FixedBuilding)calculate() float64 {
    
    	return f.biddedAcount
    	
    }
    
    func (f FixedBuilding)source() string {
    	return f.ProjectName
    
    }
    
    //通过广告点击获得收入
    type Advertise struct {
    	dName string
    	Clickout int
    	incomePerclick float64
    }
    
    func (a Advertise)calculate() float64 {
    	// a.incomePerclick*a.Clickout
    	return a.incomePerclick*float64(a.Clickout)
    	
    }
    
    func (a Advertise)source() string {
    	return a.dName
    
    }
    
    func calculateNetIncome(ic []Income)float64  {
    	netIncome :=0.0
    	for _,v := range ic{
    		fmt.Printf("收入来源:%s 收入金额:%+v 
    ",v.source(),v.calculate())
    		netIncome +=v.calculate()
    	}
    
    	return netIncome
    	
    }
    
    func main()  {
    	p1 :=FixedBuilding{
    		"项目1",
    		8000,
    	}
    
    	p2 :=FixedBuilding{
    		"项目2",
    		9000,
    	}
    
    	p3 :=Advertise{
    		dName:          "百度",
    		Clickout:       100,
    		incomePerclick: 60,
    	}
    
    	p4 :=Advertise{
    		dName:          "谷歌",
    		Clickout:       10,
    		incomePerclick: 80,
    	}
    
    	ic := []Income{p1,p2,p3,p4}
    
    	fmt.Println(calculateNetIncome(ic))
    
    
    	
    
    
    	
    }





    /* out

    收入来源:项目1 收入金额:8000
    收入来源:项目2 收入金额:9000
    收入来源:百度 收入金额:6000
    收入来源:谷歌 收入金额:800
    23800



    */

      

  • 相关阅读:
    找水王续
    大道至简-阅读笔记01
    第二阶段冲刺(第二天)
    第二阶段冲刺(第一天)
    找小水王
    《大道至简》阅读笔记02——关于项目经理
    学习进度第十二周
    找水王
    学习进度第十一周
    博客园用户体验
  • 原文地址:https://www.cnblogs.com/zexin88/p/14942253.html
Copyright © 2020-2023  润新知