From 6e181a1024ae85a435120a1e4b9b62905cd86941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20G=C3=B6r?= Date: Tue, 23 Jan 2024 05:31:02 +0300 Subject: [PATCH] Bank example added and the value calculated --- interfaces/demo2.go | 54 +++++++++++++++++++++++++++++++++++++++++++++ main.go | 1 + 2 files changed, 55 insertions(+) create mode 100644 interfaces/demo2.go diff --git a/interfaces/demo2.go b/interfaces/demo2.go new file mode 100644 index 0000000..3a59997 --- /dev/null +++ b/interfaces/demo2.go @@ -0,0 +1,54 @@ +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) + +} \ No newline at end of file diff --git a/main.go b/main.go index d3ab7a9..20d9132 100644 --- a/main.go +++ b/main.go @@ -78,4 +78,5 @@ func main() { fmt.Println("Multiply Result : ", multiply) interfaces.Demo1() + interfaces.Demo2() }