From 894e3e4f788cbf68b98d8e392152d1adad3a1b1a Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Wed, 6 Jul 2022 23:28:37 +0300 Subject: [PATCH 1/7] farm interface implementation --- main.go | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index fc0e554..539ed78 100644 --- a/main.go +++ b/main.go @@ -1,10 +1,110 @@ +// Добрий ранок! +// Домашнє завдання по інтерфейсах: +// кожна тварина в залежності від свого типу споживає різку кількість кілограмів їжі на місяць + +// собака - їсть 10кг корму на кожні 5кг власної ваги +// кішка - 7кг на кожен кілограм власної ваги +// корова - 25кг на кожен кілограм власної ваги + +// на фермі може бути різна кількість собак, кішок та корів +// кажен тип тварини має сам розраховувати для себе вагу корму +// написати динамічну функцію, яка буде виводити в консоль для кожної тварини на фермі її назву, вагу, та скільки їжі треба для того щоб її прогодувати +// ця функція також моє повертати сумму кг корму на всю ферму для подальшого виводу у консоль +// Важливо: в окремий тред необхідно скинути посилання на пул реквест на github. +// Ревью буде проходити у тому вигляді, в якому це буде вітбуватися на реальній роботі. +// Задачі перевірятимемо до четверга, оскільки далі буде вже нове завдання. +// мій github https://github.com/DGoldiner +// Всі питання по домашньому завданню у цей тред: + + + package main import ( "fmt" ) - func main() { - -} \ No newline at end of file + sliceOfAnimals := [] animal {cow{name: "Cow", weight:136}, cat{name: "Cat", weight: 7}, dog{name: "Dog", weight:15}} + totalFeedIntake(sliceOfAnimals) +} + + +type animal interface { + getName() string + feedIntake() float32 + getWeight() float32 +} + +type cow struct { + weight float32 + name string +} + +type cat struct { + weight float32 + name string +} + +type dog struct { + weight float32 + name string +} + +// returning the name of an animal + +func (c cow) getName() string { + return c.name +} + +func (c cat) getName() string { + return c.name +} + +func (d dog) getName() string { + return d.name +} + +// returning the feed Intake of an animal + +func (c cow) feedIntake() float32 { + return c.weight * 25.0 +} + +func (c cat) feedIntake() float32 { + return c.weight * 7.0 +} + +func (d dog) feedIntake() float32 { + return d.weight * 10.0 +} + +// returning the weight of an animal + +func (c cow) getWeight() float32 { + return c.weight +} + +func (c cat) getWeight() float32 { + return c.weight +} + +func (d dog) getWeight() float32 { + return d.weight +} + + +func feedIntakeforOneAnimal(a animal) { + fmt.Printf("Our %v is %v kg and consumes %v kg of feed per month\n", a.getName(), a.getWeight(), a.feedIntake()) +} + +func totalFeedIntake(animals []animal) { + var total float32 + for _, a := range animals { + feedIntakeforOneAnimal(a) + total = total + a.feedIntake() + } + fmt.Printf("The total amound of feed for all the animals is %v kg\n", total) +} + + From 71bfcafe02991c60609cfc38ee505998a62fb03a Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Wed, 6 Jul 2022 23:37:16 +0300 Subject: [PATCH 2/7] remove unnecessary comments --- main.go | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/main.go b/main.go index 539ed78..4afaec2 100644 --- a/main.go +++ b/main.go @@ -1,23 +1,3 @@ -// Добрий ранок! -// Домашнє завдання по інтерфейсах: -// кожна тварина в залежності від свого типу споживає різку кількість кілограмів їжі на місяць - -// собака - їсть 10кг корму на кожні 5кг власної ваги -// кішка - 7кг на кожен кілограм власної ваги -// корова - 25кг на кожен кілограм власної ваги - -// на фермі може бути різна кількість собак, кішок та корів -// кажен тип тварини має сам розраховувати для себе вагу корму -// написати динамічну функцію, яка буде виводити в консоль для кожної тварини на фермі її назву, вагу, та скільки їжі треба для того щоб її прогодувати -// ця функція також моє повертати сумму кг корму на всю ферму для подальшого виводу у консоль -// Важливо: в окремий тред необхідно скинути посилання на пул реквест на github. -// Ревью буде проходити у тому вигляді, в якому це буде вітбуватися на реальній роботі. -// Задачі перевірятимемо до четверга, оскільки далі буде вже нове завдання. -// мій github https://github.com/DGoldiner -// Всі питання по домашньому завданню у цей тред: - - - package main import ( From 92e622bfb26f7ddc27cc10d90796cab69ad770b9 Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Thu, 7 Jul 2022 01:09:22 +0300 Subject: [PATCH 3/7] fix the value of the dog feedIntake from 10.0 to 2.0 --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index 4afaec2..5b881b8 100644 --- a/main.go +++ b/main.go @@ -56,7 +56,7 @@ func (c cat) feedIntake() float32 { } func (d dog) feedIntake() float32 { - return d.weight * 10.0 + return d.weight * 2.0 } // returning the weight of an animal From 0d818b14635bfa3a5d93c5fe5b2d46ef1d5f99d7 Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Thu, 7 Jul 2022 01:15:14 +0300 Subject: [PATCH 4/7] Refactor the main function to move each animal to a separate row, it's easier to read --- main.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 5b881b8..e1ea1db 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,11 @@ import ( ) func main() { - sliceOfAnimals := [] animal {cow{name: "Cow", weight:136}, cat{name: "Cat", weight: 7}, dog{name: "Dog", weight:15}} + sliceOfAnimals := [] animal { + cow{name: "Cow", weight:136}, + cat{name: "Cat", weight: 7}, + dog{name: "Dog", weight:15}, + } totalFeedIntake(sliceOfAnimals) } From 127931d8f57dd868c272cdbedecb3c0b66ab634e Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Thu, 7 Jul 2022 01:33:20 +0300 Subject: [PATCH 5/7] Rename the function from feedIntakeforOneAnimal to printFeedIntake --- main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index e1ea1db..1682db9 100644 --- a/main.go +++ b/main.go @@ -78,14 +78,14 @@ func (d dog) getWeight() float32 { } -func feedIntakeforOneAnimal(a animal) { +func printFeedIntake(a animal) { fmt.Printf("Our %v is %v kg and consumes %v kg of feed per month\n", a.getName(), a.getWeight(), a.feedIntake()) } func totalFeedIntake(animals []animal) { var total float32 for _, a := range animals { - feedIntakeforOneAnimal(a) + printFeedIntake(a) total = total + a.feedIntake() } fmt.Printf("The total amound of feed for all the animals is %v kg\n", total) From be869eded09c7142163dbef6483372621ed9bc31 Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Thu, 7 Jul 2022 01:55:21 +0300 Subject: [PATCH 6/7] Fix totalFeedIntake function to make it return the value rather than print it --- main.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 1682db9..3d1a97a 100644 --- a/main.go +++ b/main.go @@ -10,7 +10,8 @@ func main() { cat{name: "Cat", weight: 7}, dog{name: "Dog", weight:15}, } - totalFeedIntake(sliceOfAnimals) + fmt.Printf("The total amound of feed for all the animals is %v kg\n", totalFeedIntake(sliceOfAnimals)) + // totalFeedIntake(sliceOfAnimals) } @@ -82,13 +83,14 @@ func printFeedIntake(a animal) { fmt.Printf("Our %v is %v kg and consumes %v kg of feed per month\n", a.getName(), a.getWeight(), a.feedIntake()) } -func totalFeedIntake(animals []animal) { +func totalFeedIntake(animals []animal) float32 { var total float32 for _, a := range animals { printFeedIntake(a) total = total + a.feedIntake() } - fmt.Printf("The total amound of feed for all the animals is %v kg\n", total) + return total + // fmt.Printf("The total amound of feed for all the animals is %v kg\n", total) } From 3ac788afa12c27786345af0af85876efa0f6c5ee Mon Sep 17 00:00:00 2001 From: Max Petruk Date: Thu, 7 Jul 2022 01:56:20 +0300 Subject: [PATCH 7/7] Remove some comments --- main.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/main.go b/main.go index 3d1a97a..2422438 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,6 @@ func main() { dog{name: "Dog", weight:15}, } fmt.Printf("The total amound of feed for all the animals is %v kg\n", totalFeedIntake(sliceOfAnimals)) - // totalFeedIntake(sliceOfAnimals) } @@ -90,7 +89,6 @@ func totalFeedIntake(animals []animal) float32 { total = total + a.feedIntake() } return total - // fmt.Printf("The total amound of feed for all the animals is %v kg\n", total) }