gokursu/interfaces/demo2.go

54 lines
No EOL
1,017 B
Go

package interfaces
import "fmt"
type Mortgage struct{
creditPaymentTotal float64
address string
rate float64
}
type Car struct{
creditPaymentTotal float64
carInfo string
rate float64
}
type CreditCalculator interface{
Calculate() float64
}
func (m Mortgage) Calculate() float64{
return m.creditPaymentTotal * m.rate / 12
}
func (c Car) Calculate() float64{
return c.creditPaymentTotal * c.rate / 12
}
func CalculateMonthlyPayment(credits []CreditCalculator) float64{
paymentTotal:= 0.0
for i := 0; i < len(credits); i++ {
paymentTotal = paymentTotal + (credits[i].Calculate())
}
return paymentTotal
}
func Demo2() {
credit1:= Mortgage{rate:10, creditPaymentTotal: 100000, address: "Ankara"}
credit2:= Mortgage{rate:12, creditPaymentTotal: 50000, address: "İstanbul"}
credit3:= Car{rate:15, creditPaymentTotal: 60000, carInfo:"Polo"}
credits:= []CreditCalculator{credit1, credit2, credit3}
total:= CalculateMonthlyPayment(credits)
fmt.Println("Total payment", total)
}