diff options
Diffstat (limited to 'temperature.go')
| -rw-r--r-- | temperature.go | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/temperature.go b/temperature.go index ac8cae0..166d222 100644 --- a/temperature.go +++ b/temperature.go @@ -1,9 +1,6 @@ package main -import ( - "errors" - "fmt" -) +import "fmt" type TemperatureUnit int @@ -13,30 +10,14 @@ const ( Fahrenheit ) -var TemperatureUnits = []string{"°C", "°K", "°F"} - -func ParseTemperatureUnit(s string) (TemperatureUnit, error) { - // Each case corresponds to a value in UnitStrings(). - switch s { - case "°C": - return Celcius, nil - case "°K": - return Kelvin, nil - case "°F": - return Fahrenheit, nil - default: - return *new(TemperatureUnit), errors.New(fmt.Sprintf("invalid unit: '%s'", s)) - } -} - type Temperature struct { - Val float32 + Val float64 Unit TemperatureUnit } -func (t Temperature) AsUnit(u TemperatureUnit) (float32, error) { +func (t Temperature) AsUnit(u TemperatureUnit) float64 { // Convert to celcius - var c float32 + var c float64 switch t.Unit { case Celcius: c = t.Val @@ -49,12 +30,12 @@ func (t Temperature) AsUnit(u TemperatureUnit) (float32, error) { // Convert to desired unit switch u { case Celcius: - return c, nil + return c case Kelvin: - return c + 272.15, nil + return c + 272.15 case Fahrenheit: - return c*(9.0/5.0) + 32.0, nil + return c*(9.0/5.0) + 32.0 default: - return 0, errors.New(fmt.Sprintf("invalid unit: '%v'", u)) + panic(fmt.Sprintf("invalid unit: '%v'", u)) } } |