From 3a763d60d5ee3848be22179af76aa53ddc43b2c5 Mon Sep 17 00:00:00 2001 From: Igor V Belousov Date: Tue, 11 Jan 2022 22:58:15 +0300 Subject: [PATCH] Chapter 2 - tempconv package --- ch2/ch26.go | 17 +++++++++++++++++ ch2/tempconv/conv.go | 19 +++++++++++++++++++ ch2/tempconv/tempconv.go | 27 +++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 ch2/ch26.go create mode 100644 ch2/tempconv/conv.go create mode 100644 ch2/tempconv/tempconv.go diff --git a/ch2/ch26.go b/ch2/ch26.go new file mode 100644 index 0000000..4ef4260 --- /dev/null +++ b/ch2/ch26.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "mygit.i2g.ru/biv/LearnGoDonovan/ch2/tempconv" +) + +func main() { + fmt.Printf("Брррр! %v\n", tempconv.AbsoluteZeroC) // Брррр! -273.15°C + fmt.Println(tempconv.CToF(tempconv.BoilingC)) // 212°F + fmt.Println(tempconv.FToK(0.0)) + fmt.Println(tempconv.CToK(tempconv.FreezingC)) + fmt.Println(tempconv.FToC(-50)) + fmt.Println(tempconv.KToC(0)) + fmt.Println(tempconv.KToF(505.92789)) + +} diff --git a/ch2/tempconv/conv.go b/ch2/tempconv/conv.go new file mode 100644 index 0000000..1146224 --- /dev/null +++ b/ch2/tempconv/conv.go @@ -0,0 +1,19 @@ +package tempconv + +// CToF преобразует температуру по Цельсию в температуру по Фаренгейту. +func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) } + +// CToK преобразует температуру по Цельсию в температуру по Кельвину. +func CToK(c Celsius) Kelvin { return Kelvin(c + 273.15) } + +// FToC преобразует температуру по Фаренгейту в температуру по Цельсию. +func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) } + +// FToK преобразует температуру по Фаренгейту в температуру по Кельвину. +func FToK(f Fahrenheit) Kelvin { return Kelvin((f + 459.67) * 5 / 9) } + +// KToC преобразует температуру по Кельвину в температуру по Цельсию. +func KToC(k Kelvin) Celsius { return Celsius(k - 273.15) } + +// KToF преобразует температуру по Кельвину в температуру по Фаренгейту. +func KToF(k Kelvin) Fahrenheit { return Fahrenheit(k*9/5 - 459.67) } diff --git a/ch2/tempconv/tempconv.go b/ch2/tempconv/tempconv.go new file mode 100644 index 0000000..67f620b --- /dev/null +++ b/ch2/tempconv/tempconv.go @@ -0,0 +1,27 @@ +// Пакет tempconv выполняет преобразование температур. +package tempconv + +import "fmt" + +type Celsius float64 +type Fahrenheit float64 +type Kelvin float64 + +// Константы температур по Цельсию +const ( + AbsoluteZeroC Celsius = -273.15 // Абсолютный нуль + FreezingC Celsius = 0 // Температура замерзания воды + BoilingC Celsius = 100 // Точка кипения воды +) + +func (c Celsius) String() string { + return fmt.Sprintf("%g°C", c) +} + +func (f Fahrenheit) String() string { + return fmt.Sprintf("%g°F", f) +} + +func (k Kelvin) String() string { + return fmt.Sprintf("%g°K", k) +}