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
}
У цій вправі ми будемо писати трохи коду, щоб допомогти приготувати чудову лазанью з улюбленої кулінарної книги.
На нас чекають чотири завдання, усі повʼязані з часом, витраченим на приготування лазаньї.
Визначте константу OvenTime зі значенням, що дорівнює кількості хвилин, які лазанья має провести в духовці.
Згідно з кулінарною книгою, очікуваний час у духовці становить 40 хвилин:
OvenTime
// => 40
Визначте функцію RemainingOvenTime(), яка приймає як параметр фактичну кількість хвилин, які лазанья вже провела в духовці, і повертає, скільки хвилин лазанья ще має залишатися в духовці, виходячи з очікуваного часу в духовці з попереднього завдання.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Визначте функцію PreparationTime, яка приймає як параметр кількість шарів, доданих до лазаньї, і повертає кількість хвилин, витрачених на підготовку лазаньї, якщо припустити, що на підготовку кожного шару потрібно 2 хвилини.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Визначте функцію ElapsedTime, яка приймає два параметри: перший - кількість шарів, доданих до лазаньї, а другий - кількість хвилин, які лазанья провела в духовці.
Функція має повернути, скільки хвилин загалом ми витратили на приготування лазаньї, тобто суму часу підготовки та часу, який лазанья провела в духовці на цей момент, у хвилинах.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 35 концепцій167 вправ та справжнє наставництво від людей, і все це безкоштовно.