From e5715d759c63ee1e93954b9b405c5442c8fcfc4e Mon Sep 17 00:00:00 2001 From: Igor V Belousov Date: Tue, 11 Jan 2022 19:09:53 +0300 Subject: [PATCH] mod tempconv0 ch2.5 --- ch2/tempconv0.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/ch2/tempconv0.go b/ch2/tempconv0.go index 79e62d0..d668edd 100644 --- a/ch2/tempconv0.go +++ b/ch2/tempconv0.go @@ -18,8 +18,26 @@ const ( func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) } func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) } +func (c Celsius) String() string { return fmt.Sprintf("%g°C", c) } + func main() { - fmt.Printf("%g\n", BoilingC) + fmt.Printf("%g\n", BoilingC-FreezingC) // 100 boilingF := CToF(BoilingC) - fmt.Printf("g%\n", boilingF) + fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // 180 + //fmt.Printf("%g\n", boilingF-FreezingC) // Ошибка компиляции: несоответствие типов + + var c Celsius + var f Fahrenheit + fmt.Println(c == 0) // true + fmt.Println(f >= 0) // true + //fmt.Println(c == f) // Ошибка компиляции: несоответствие типов + fmt.Println(c == Celsius(f)) // true ! потому что c и f равны 0 + + c = FToC(212.0) + fmt.Println(c.String()) // 100°C + fmt.Printf("%v\n", c) // 100°C; явный вызов String не нужен + fmt.Printf("%s\n", c) // 100°C; явный вызов String не нужен + fmt.Println(c) // 100°C; явный вызов String не нужен + fmt.Printf("%g\n", c) // 100; не вызывает String + fmt.Println(float64(c)) // 100; не вызывает String }