Menu
Coddy logo textTech

Retornando Múltiplos Valores

Parte da seção Fundamentos do Journey de GO da Coddy — lição 56 de 109.

As funções Go podem retornar múltiplos valores de uma só vez, o que é extremamente útil para retornar tanto resultados quanto informações de erro.

Crie uma função que retorne tanto o quociente quanto o resto:

func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

func main() {
    q, r := divide(7, 3)
    fmt.Println("7 ÷ 3 =", q, "with remainder", r)
}

Quando você executa este programa, a saída é:

7 ÷ 3 = 2 with remainder 1

A função retorna dois valores separados por vírgulas e capturamos ambos os valores usando múltiplas variáveis na atribuição.

Se você precisar de apenas um dos valores retornados, você pode usar o identificador em branco _ para ignorar o outro. Por exemplo, para obter apenas o quociente:

q, _ := divide(7, 3)
fmt.Println("Quotient:", q)

O _ descarta o resto para que o compilador não reclame de uma variável não utilizada.

challenge icon

Desafio

Iniciante

Neste desafio, você praticará o retorno de múltiplos valores de uma função em Go.

Temos uma função chamada getPersonInfo que deve retornar o nome, a idade e se a pessoa é um estudante. Sua tarefa é completar a função adicionando a instrução de retorno apropriada.

Folha de consulta

Funções em Go podem retornar múltiplos valores de uma só vez. Especifique múltiplos tipos de retorno entre parênteses e retorne múltiplos valores separados por vírgulas:

func divide(a, b int) (int, int) {
    quotient := a / b
    remainder := a % b
    return quotient, remainder
}

Capture múltiplos valores de retorno usando múltiplas variáveis na atribuição:

q, r := divide(7, 3)

Experimente você mesmo

package main

import "fmt"

// Esta função deve retornar três valores: name, age e isStudent
func getPersonInfo() (string, int, bool) {
	// As variáveis já estão definidas para você
	name := "Alex"
	age := 25
	isStudent := true
	
	// TODO: Retornar todos os três valores (name, age, isStudent)
	
}

func main() {
	// Chama a função e armazena os valores retornados
	name, age, isStudent := getPersonInfo()
	
	// Imprime os valores
	fmt.Printf("Name: %s\n", name)
	fmt.Printf("Age: %d\n", age)
	fmt.Printf("Is Student: %t\n", isStudent)
}
quiz iconTeste seus conhecimentos

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