Итоги — решение проблем
Часть раздела Основы путешествия по GO на Coddy — урок 109 из 109.
Задание
ЛегкоДавайте попрактикуемся в обработке ошибок в Go на примере простой программы для конвертации температуры.
Ваша задача — реализовать функцию, которая переводит температуру из градусов Цельсия в градусы Фаренгейта с надлежащей обработкой ошибок.
Допишите функцию celsiusToFahrenheit, которая:
- Конвертирует температуру из Цельсия в Фаренгейт по формуле: F = C × 9/5 + 32
- Возвращает ошибку, если температура ниже абсолютного нуля (-273.15°C)
В качестве сообщения об ошибке вы должны вернуть ровно: "Error: temperature below absolute zero"
Функция main содержит тестовые случаи для проверки вашей реализации.
Попробуйте сами
package main
import (
"errors"
"fmt"
)
// celsiusToFahrenheit преобразует градусы Цельсия в градусы Фаренгейта
// Возвращает ошибку, если температура ниже абсолютного нуля (-273.15°C)
func celsiusToFahrenheit(celsius float64) (float64, error) {
// TODO: Реализовать логику преобразования
// 1. Проверить, не ниже ли температура абсолютного нуля (-273.15°C)
// 2. Если значение допустимо, преобразовать по формуле: F = C × 9/5 + 32
// 3. Вернуть соответствующее значение и ошибку
return 0, nil
}
func main() {
// Тест допустимой температуры
fmt.Println("Converting 25°C to Fahrenheit:")
fahrenheit, err := celsiusToFahrenheit(25)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("25°C = %.2f°F\n", fahrenheit)
}
// Тест другой допустимой температуры
fmt.Println("\nConverting 0°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(0)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("0°C = %.2f°F\n", fahrenheit)
}
// Тест недопустимой температуры (ниже абсолютного нуля)
fmt.Println("\nConverting -300°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(-300)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("-300°C = %.2f°F\n", fahrenheit)
}
}Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода11Составные типы: Срезы
Введение в срезыОбъявление литералов срезовСоздание срезов с помощью `make`Длина и емкость срезаДоступ к элементам срезаДобавление элементовПолучение срезов из существующих срезов/массивовИтерация по срезамКопирование срезовИтоги: Динамические списки14Основы обработки ошибок
Концепция ошибокИнтерфейс `error`Функции, возвращающие ошибкиПроверка ошибокСоздание простых ошибокСоздание форматированных ошибокОсновы обработки ошибокИтоги — решение проблем3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений