Go Practice Exercises

Temperature Converter in Go

Give Celsius and Fahrenheit their own types so the compiler stops you mixing them.

  • Beginner
  • 3 min read
  • 1 runnable example
What you'll learn
  • Defined types
  • Methods on number types
  • The String method
convert
100.0°C212.0°F
98.6°F37.0°C
-40.0°C-40.0°F

The unit is part of the type

Giving each unit its own type lets the compiler stop you from mixing Celsius and Fahrenheit by accident, even though both are float64 underneath.

Celsius and Fahrenheit are separate types with their own methods. A String method decides how fmt.Println prints a value, here with one digit after the decimal point. -40 is the one temperature that is the same on both scales.

Key points

  1. Celsius and Fahrenheit are separate types.
  2. A String method controls printing.
  3. -40 is the same on both scales.

Runnable Go example

Go
Run code →
main.go
package main

import "fmt"

type Celsius float64
type Fahrenheit float64

func (c Celsius) ToFahrenheit() Fahrenheit { return Fahrenheit(c*9/5 + 32) }
func (f Fahrenheit) ToCelsius() Celsius    { return Celsius((f - 32) * 5 / 9) }

func (c Celsius) String() string    { return fmt.Sprintf("%.1f°C", float64(c)) }
func (f Fahrenheit) String() string { return fmt.Sprintf("%.1f°F", float64(f)) }

func main() {
	boiling := Celsius(100)
	body := Fahrenheit(98.6)
	cold := Celsius(-40)

	fmt.Println(boiling, "=", boiling.ToFahrenheit())
	fmt.Println(body, "=", body.ToCelsius())
	fmt.Println(cold, "=", cold.ToFahrenheit())
}
Get a Run button for this example Result of running the code
100.0°C = 212.0°F
98.6°F = 37.0°C
-40.0°C = -40.0°F

Practice

Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.

Finished this lesson?

Mark it as learned to track your progress.

Next: Error Handling →

Practice with a challenge

Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.

All challenges