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 1A 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.
Desafio
InicianteNeste 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)
}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ável3Operadores 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