Exercices Go

Temperature Converter in Go

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

  • Débutant
  • 3 min de lecture
  • 1 exemple exécutable
Ce que vous allez apprendre
  • 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.

Points clés

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

Exemple Go exécutable

Go
Exécuter le 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())
}
Obtenir un bouton Run pour cet exemple Résultat de l'exécution
100.0°C = 212.0°F
98.6°F = 37.0°C
-40.0°C = -40.0°F

S'entraîner

Ouvrez l'exemple dans le compilateur en ligne, modifiez une valeur ou ajoutez une ligne, et devinez la sortie avant de l'exécuter. Cassez ensuite le code exprès et lisez le message du compilateur.

Leçon terminée ?

Marquez-la comme apprise pour suivre votre progression.

Suivante : Error Handling →

S'entraîner avec un défi

Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.

Tous les défis