0Pricing
Go Academy · Aula

Vários valores de retorno

Retorne tuplas e use o padrão de error

Vários valores de retorno é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

Por que múltiplos valores de retorno?

As funções do Go podem retornar múltiplos valores, eliminando a necessidade de parâmetros de saída ou exceções. O padrão mais comum é retornar um resultado e um erro:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

Tratamento de múltiplos valores de retorno

Quem chama a função recebe todos os valores de retorno como uma tupla. Use _ para descartar os valores de que não precisa:

result, err := divide(10, 3)
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

value, _ := divide(8, 2) // discard error

Valores de retorno nomeados

Os valores de retorno podem receber nomes, transformando-se em variáveis dentro da função:

func minMax(nums []int) (min, max int) {
    min, max = nums[0], nums[0]
    for _, n := range nums[1:] {
        if n < min { min = n }
        if n > max { max = n }
    }
    return // naked return
}

Retornos implícitos

Um return sem argumentos retorna as variáveis de retorno nomeadas. Use com moderação — somente em funções curtas cujos nomes sejam autoexplicativos:

  • Funções curtas: aceitável
  • Funções longas: prejudica a legibilidade — prefira retornos explícitos

O padrão (valor, erro)

O padrão idiomático de tratamento de erros em Go:

func readConfig(path string) (Config, error) {
    data, err := os.ReadFile(path)
    if err != nil {
        return Config{}, fmt.Errorf("read config: %w", err)
    }
    var cfg Config
    return cfg, json.Unmarshal(data, &cfg)
}

Nunca ignore erros

Ignorar erros usando _ é perigoso. Práticas recomendadas:

  • Verifique todos os erros, a menos que tenha um motivo específico para não fazer isso
  • Envolva os erros com contexto usando fmt.Errorf("op: %w", err)
  • Use log.Fatal ou panic somente nos limites do programa, não no interior de bibliotecas

Retornos de três valores

Algumas funções retornam três valores, embora isso seja menos comum:

func parseIPPort(s string) (ip string, port int, err error) {
    // ... parsing logic
    return
}

Retornar estruturas versus múltiplos valores

Quando retornar uma estrutura em vez de múltiplos valores:

  • 2 ou 3 valores fortemente relacionados: múltiplos retornos são adequados
  • 4 ou mais valores ou campos opcionais: use uma estrutura
  • O padrão (valor, erro): use sempre múltiplos retornos

Atribuição a variáveis existentes

Use = (não :=) ao atribuir valores a variáveis já declaradas fora da chamada:

var cfg Config
var err error
cfg, err = loadConfig()
if err != nil { ... }

Múltiplos retornos no encadeamento de métodos

Go não oferece suporte ao encadeamento de métodos diretamente sobre valores de retorno múltiplos (ao contrário de Result.map). Use variáveis intermediárias para tratar os erros em cada etapa:

data, err := fetchData(url)
if err != nil { return err }
parsed, err := parseData(data)
if err != nil { return err }
return save(parsed)

Verificação rápida

O que um retorno implícito faz em Go?

Recapitulação: múltiplos valores de retorno

Múltiplos retornos são um idioma central de Go:

  • As funções podem retornar vários valores em uma lista entre parênteses
  • O padrão (valor, erro) está em toda parte — sempre verifique o erro
  • Variáveis de retorno nomeadas permitem retornos implícitos (use com moderação)
  • Use _ para descartar valores de que não precisa
  • Prefira múltiplos retornos a parâmetros de saída para criar APIs mais limpas

Próximo tópico: funções variádicas.

Perguntas Frequentes

A aula “Vários valores de retorno” é grátis?

Sim — o texto completo de “Vários valores de retorno” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Vários valores de retorno”?

Retorne tuplas e use o padrão de error Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Vários valores de retorno”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos e assinaturas de funções
  2. Vários valores de retorno
  3. Funções variádicas
  4. defer, funções anônimas e closures
← Voltar para Go Academy