aboutsummaryrefslogtreecommitdiffstats
path: root/temperature.go
diff options
context:
space:
mode:
Diffstat (limited to 'temperature.go')
-rw-r--r--temperature.go35
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))
}
}