Recapitulação - Lidando com Problemas
Parte da seção Fundamentos do Journey de GO da Coddy — lição 109 de 109.
Desafio
FácilVamos praticar o tratamento de erros em Go com um programa simples de conversão de temperatura.
Sua tarefa é implementar uma função que converte temperaturas de Celsius para Fahrenheit, com o tratamento de erros adequado.
Complete a função celsiusToFahrenheit que:
- Converte uma temperatura em Celsius para Fahrenheit usando a fórmula: F = C × 9/5 + 32
- Retorna um erro se a temperatura estiver abaixo do zero absoluto (-273.15°C)
Para a mensagem de erro, você deve retornar exatamente: "Error: temperature below absolute zero"
A função main contém casos de teste para verificar sua implementação.
Experimente você mesmo
package main
import (
"errors"
"fmt"
)
// celsiusToFahrenheit converte Celsius para Fahrenheit
// Retorna um erro se a temperatura for abaixo do zero absoluto (-273.15°C)
func celsiusToFahrenheit(celsius float64) (float64, error) {
// TODO: Implementar a lógica de conversão
// 1. Verificar se a temperatura está abaixo do zero absoluto (-273.15°C)
// 2. Se for válida, converter usando a fórmula: F = C × 9/5 + 32
// 3. Retornar o valor apropriado e o erro
return 0, nil
}
func main() {
// Testar temperatura válida
fmt.Println("Converting 25°C to Fahrenheit:")
fahrenheit, err := celsiusToFahrenheit(25)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("25°C = %.2f°F\n", fahrenheit)
}
// Testar outra temperatura válida
fmt.Println("\nConverting 0°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(0)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("0°C = %.2f°F\n", fahrenheit)
}
// Testar temperatura inválida (abaixo do zero absoluto)
fmt.Println("\nConverting -300°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(-300)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("-300°C = %.2f°F\n", fahrenheit)
}
}Todas as lições de Fundamentos
4Operadores de Comparação e Lógicos
Operadores de Comparação - Parte 1Operadores de Comparação - Parte 2Operador Lógico ANDOperador Lógico OROperador Lógico NOTFundamentos de Precedência de OperadoresRecapitulação - Fazendo Comparações7Fluxo de Controle: Loops
O Loop `for` ExplicadoLoop For - BásicoLoop For - Apenas CondiçãoA Palavra-chave `break`A Palavra-chave `continue`Loops AninhadosRecapitulação - Repetindo Ações2Variáveis e Tipos de Dados Básicos
O que é uma variávelInferência de Tipo com `:=`Inteiros (int)Números de Ponto FlutuanteBooleanosStringsValores ZeroConstantesConvenções de NomenclaturaRecapitulação - Variáveis e Tipos5Entrada/Saída Básica
Saída FormatadaVerbos de FormataçãoImprimindo TiposObtendo Entrada Básica do UsuárioRecapitulação - Entrada e Saída8Funções
Entendendo FunçõesDeclarando uma FunçãoChamando FunçõesParâmetros de FunçãoRetornando um Único ValorRetornando Múltiplos ValoresValores de Retorno NomeadosFundamentos de Escopo de FunçãoRecapitulação - Criando Código Reutilizável11Tipos Compostos: Slices
Introdução aos SlicesDeclarando Literais de SliceCriando Slices com `make`Comprimento vs Capacidade de SlicesAcessando Elementos de SlicesAdicionando ElementosFatiando Slices/Arrays ExistentesIterando sobre SlicesCopiando SlicesRecapitulação - Listas Dinâmicas14Tratamento de Erros Básico
O Conceito de ErrosA Interface `error`Funções que Retornam ErrosVerificando ErrosCriando Erros SimplesCriando Erros FormatadosTratamento de Erros BásicoRecapitulação - Lidando com Problemas3Operadores Básicos
Operadores AritméticosOperador de DivisãoO Operador MóduloOperador de AtribuiçãoOperadores de Atribuição CompostaIncremento e DecrementoRecapitulação - Cálculos6Fluxo de Controle: Condicionais
A Instrução `if`A Palavra-chave `else`A Palavra-chave `else if`Sombreamento de Variáveis no `if`Inicializando VariáveisA Instrução `switch`Switch com ExpressõesSwitch sem ExpressãoA Palavra-chave `fallthrough`Recapitulação - Tomando Decisões