Треки
/
Go
Go
/
Вправи
/
Розкішна лазанья Ґофера
Розкішна лазанья Ґофера

Розкішна лазанья Ґофера

Навчальна вправа

Вступ

Go — статично типізована компільована мова програмування. Ця вправа знайомить із трьома важливими можливостями мови: пакетами, функціями та змінними.

Пакети

Застосунки на Go організовано в пакети. Пакет обʼєднує файли з кодом, що лежать в одній директорії. Усі файли з кодом в одній директорії повинні мати однакову назву пакета. Коли пакет імпортують, використовувати можна лише ті сутності (функції, типи, змінні, константи), назви яких починаються з великої літери. У Go рекомендовано називати ідентифікатори в стилі camelCase, крім тих, що мають бути доступними з інших пакетів, - їх записують у стилі PascalCase.

package lasagna

Змінні

Go — статично типізована мова, тобто всі змінні повинні мати визначений тип під час компіляції.

Змінну можна оголосити, явно вказавши її тип:

var explicit int // Explicitly typed

Також можна скористатися ініціалізатором, і компілятор визначить тип змінної відповідно до типу ініціалізатора.

implicit := 10   // Implicitly typed as an int

Після оголошення змінній можна присвоювати значення за допомогою оператора =. Після оголошення тип змінної вже ніколи не може змінитися.

count := 1 // Assign initial value
count = 2  // Update to new value

count = false // This throws a compiler error due to assigning a non `int` type

Константи

Константи зберігають дані так само, як змінні, але їхнє значення не може змінитися під час виконання програми.

Константи оголошують за допомогою ключового слова const; вони можуть бути числами, символами, рядками тексту (англ. string) або булевими значеннями (англ. Boolean):

const Age = 21 // Defines a numeric constant 'Age' with the value of 21

Функції

Функції в Go приймають нуль або більше параметрів. Параметри потрібно явно типізувати, тут немає виведення типу.

Значення з функцій повертають за допомогою ключового слова return.

Щоб викликати функцію, потрібно вказати її назву та передати аргументи для кожного з її параметрів.

Зауважмо, що Go підтримує два типи коментарів. Однорядкові коментарі починаються з //, а багаторядкові вставляють між /* і */.

package greeting

// Hello is a public function.
func Hello (name string) string {
    return hi(name)
}

// hi is a private function.
func hi (name string) string {
    return "hi " + name
}

Вказівки

У цій вправі ми будемо писати трохи коду, щоб допомогти приготувати чудову лазанью з улюбленої кулінарної книги.

На нас чекають чотири завдання, усі повʼязані з часом, витраченим на приготування лазаньї.

1. Визначте очікуваний час у духовці у хвилинах

Визначте константу OvenTime зі значенням, що дорівнює кількості хвилин, які лазанья має провести в духовці. Згідно з кулінарною книгою, очікуваний час у духовці становить 40 хвилин:

OvenTime
// => 40

2. Обчисліть залишковий час у духовці у хвилинах

Визначте функцію RemainingOvenTime(), яка приймає як параметр фактичну кількість хвилин, які лазанья вже провела в духовці, і повертає, скільки хвилин лазанья ще має залишатися в духовці, виходячи з очікуваного часу в духовці з попереднього завдання.

func RemainingOvenTime(actual int) int {
    // TODO
}

RemainingOvenTime(30)
// => 10

3. Обчисліть час підготовки у хвилинах

Визначте функцію PreparationTime, яка приймає як параметр кількість шарів, доданих до лазаньї, і повертає кількість хвилин, витрачених на підготовку лазаньї, якщо припустити, що на підготовку кожного шару потрібно 2 хвилини.

func PreparationTime(numberOfLayers int) int {
    // TODO
}

PreparationTime(2)
// => 4

4. Обчисліть загальний робочий час у хвилинах

Визначте функцію ElapsedTime, яка приймає два параметри: перший - кількість шарів, доданих до лазаньї, а другий - кількість хвилин, які лазанья провела в духовці. Функція має повернути, скільки хвилин загалом ми витратили на приготування лазаньї, тобто суму часу підготовки та часу, який лазанья провела в духовці на цей момент, у хвилинах.

func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
    // TODO
}

ElapsedTime(3, 20)
// => 26
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Go Exercism

Час розпочати Розкішна лазанья Ґофера?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 35 концепцій167 вправ та справжнє наставництво від людей, і все це безкоштовно.