У Go числа можна порівнювати за допомогою таких операторів відношення та рівності.
| Порівняння | Оператор |
|---|---|
| дорівнює | == |
| не дорівнює | != |
| менше | < |
| менше або дорівнює | <= |
| більше | > |
| більше або дорівнює | >= |
Результатом порівняння завжди є булеве значення (англ. Boolean), тобто true або false.
a := 3
a != 4 // true
a > 5 // false
Наведені вище оператори порівняння також можна використовувати для порівняння рядків тексту (англ. string). У цьому випадку застосовується лексикографічний (словниковий) порядок. Наприклад:
"apple" < "banana" // true
"apple" > "banana" // false
Умовні конструкції в Go подібні до умовних конструкцій в інших мовах.
Базовим типом будь-якої умовної операції є тип bool, який може мати значення true або false.
Умовні конструкції часто використовуються як механізми керування потоком, щоб перевіряти різні умови.
Для перевірки конкретного випадку можна використати умовну конструкцію if, яка виконує свій код, якщо відповідна умова дорівнює true, ось так:
var value string
if value == "val" {
return "was val"
}
У сценаріях із більш ніж одним випадком багато умовних конструкцій if можна обʼєднати в ланцюжок за допомогою конструкцій else if та else.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
Умовні конструкції також можуть містити коротку інструкцію ініціалізації, яку можна використати, щоб ініціалізувати одну або кілька змінних для конструкції if.
Наприклад:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Примітка: будь-які змінні, створені в інструкції ініціалізації, виходять з області видимості після завершення умовної конструкції
if.
У цій вправі ми напишемо трохи коду, щоб допомогти підготуватися до купівлі транспортного засобу.
На нас чекають три завдання: визначити, чи потрібне посвідчення водія, допомогти вибрати між двома транспортними засобами та оцінити прийнятну ціну вживаного транспортного засобу.
Деякі види транспортних засобів вимагають посвідчення водія для керування ними.
Припустімо, що посвідчення вимагають лише види "car" і "truck", а всім іншим можна керувати без нього.
Реалізуйте функцію NeedsLicense(kind), яка приймає вид транспортного засобу і повертає булеве значення (англ. Boolean), що вказує, чи потрібне посвідчення для такого виду транспорту.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Ми оцінюємо доступні варіанти транспортних засобів.
Нам вдається звузити вибір до двох варіантів, але потрібна допомога, щоб ухвалити остаточне рішення.
Для цього реалізуйте функцію ChooseVehicle(option1, option2), яка приймає два транспортні засоби як аргументи і повертає рішення, що містить варіант, який стоїть першим у лексикографічному порядку.
vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
Тепер, коли рішення ухвалено, ми хочемо переконатися, що в автосалоні отримаємо справедливу ціну. Оскільки нас цікавить купівля вживаного транспортного засобу, ціна залежить від його віку. Для приблизної оцінки припустімо: якщо вік транспортного засобу менший за 3 роки, він коштує 80% початкової ціни, яку мав новим. Якщо йому щонайменше 10 років, він коштує 50%. Якщо вік транспортного засобу щонайменше 3 роки, але менше ніж 10 років, він коштує 70% початкової ціни.
Реалізуйте функцію CalculateResellPrice(originalPrice, age), яка застосовує цю логіку за допомогою if, else if та else (є й інші способи, якщо захочеться потренуватися).
Вона приймає початкову ціну та вік транспортного засобу як аргументи і повертає оцінену ціну в автосалоні.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Зверніть увагу: повернене значення має тип float64.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.