github.com/mikejeuga/temperature-converter@v0.0.0-20220721135550-2cf6fcec7145/src/internal/domain/temperature_conversion.go (about) 1 package domain 2 3 import ( 4 "github.com/mikejeuga/temperature-converter/models" 5 ) 6 7 type ConverterCtoF func(temp models.Celsius) (models.Fahrenheit, error) 8 type ConverterFtoC func(temp models.Fahrenheit) (models.Celsius, error) 9 10 type Converter struct { 11 CelsiusConverter ConverterCtoF 12 FahrenheitConverter ConverterFtoC 13 } 14 15 func NewConverter(celsiusConverter ConverterCtoF, fahrenheitConverter ConverterFtoC) Converter { 16 return Converter{CelsiusConverter: celsiusConverter, FahrenheitConverter: fahrenheitConverter} 17 } 18 19 func (c Converter) ConvertCtoF(temp models.Celsius) (models.Fahrenheit, error) { 20 return c.CelsiusConverter(temp) 21 } 22 23 func (c Converter) ConvertFtoC(temp models.Fahrenheit) (models.Celsius, error) { 24 return c.FahrenheitConverter(temp) 25 } 26 27 func ConvertCtoF(temp models.Celsius) (models.Fahrenheit, error) { 28 result := (float64(temp) * 1.8) + 32 29 return models.Fahrenheit(result), nil 30 } 31 32 func ConvertFtoC(temp models.Fahrenheit) (models.Celsius, error) { 33 result := (float64(temp) - 32) / 1.8 34 return models.Celsius(result), nil 35 }