A Interface `error`
Parte da seção Fundamentos do Journey de GO da Coddy — lição 103 de 109.
Em Go, a interface error é um tipo integrado que representa condições de erro. Qualquer tipo que implemente o método Error() satisfaz essa interface.
Aqui está a definição da interface error:
type error interface {
Error() string
}Crie um tipo de erro personalizado:
type MyError struct {
Message string
}
func (e MyError) Error() string {
return e.Message
}
func main() {
err := MyError{Message: "something went wrong"}
fmt.Println(err)
}A saída será:
something went wrongDesafio
FácilNeste desafio, você trabalhará com a interface error do Go. Você precisa criar um erro personalizado usando a função errors.New() e então verificar se um erro existe.
O código já possui uma função que retorna um erro. Sua tarefa é verificar se o erro não é nil e imprimir uma mensagem apropriada.
Folha de consulta
A interface error é um tipo integrado que representa condições de erro. Qualquer tipo que implemente o método Error() satisfaz esta interface:
type error interface {
Error() string
}Crie um tipo de erro personalizado:
type MyError struct {
Message string
}
func (e MyError) Error() string {
return e.Message
}
func main() {
err := MyError{Message: "something went wrong"}
fmt.Println(err) // Saída: something went wrong
}Use errors.New() para criar erros simples e verificar se um erro não é nil.
Experimente você mesmo
package main
import (
"errors"
"fmt"
)
func main() {
// Esta função retorna um erro
err := generateError()
// TODO: Verifique se err não é nulo
// Se err não for nulo, imprima: "Error occurred: " seguido pela mensagem de erro
// DICA: Use uma instrução if para verificar se err != nil
// Esta linha só será executada se nenhum erro ocorrer
fmt.Println("Program completed successfully")
}
// Esta função gera um erro
func generateError() error {
return errors.New("something went wrong")
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
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