Exercícios de Go
Temperature Converter in Go
Give Celsius and Fahrenheit their own types so the compiler stops you mixing them.
O que você vai aprender
- Defined types
- Methods on number types
- The String method
convert
100.0°C212.0°F98.6°F37.0°C-40.0°C-40.0°FThe 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.
Pontos-chave
- Celsius and Fahrenheit are separate types.
- A String method controls printing.
- -40 is the same on both scales.
Exemplo executável de Go
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())
}
100.0°C = 212.0°F
98.6°F = 37.0°C
-40.0°C = -40.0°FPratique
Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.
Terminou esta lição?
Marque como aprendida para acompanhar seu progresso.
Seu progresso está salvo neste navegador Entre para mantê-lo em todos os dispositivos.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
Todos os desafios