54 lines
No EOL
1,017 B
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)
|
|
|
|
} |