Esercizi di Go

Temperature Converter in Go

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

  • Principiante
  • 3 min di lettura
  • 1 esempio eseguibile
Cosa imparerai
  • 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.

Punti chiave

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

Esempio Go eseguibile

Go
Esegui il codice →
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())
}
Crea un pulsante Run per questo esempio Risultato dell'esecuzione
100.0°C = 212.0°F
98.6°F = 37.0°C
-40.0°C = -40.0°F

Esercitati

Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.

Hai finito questa lezione?

Segnala come imparata per tenere traccia dei tuoi progressi.

Prossima: Error Handling →

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide