Retornando Múltiplos Valores
Parte da seção Fundamentos do Journey de GO da Coddy. Lição 56 de 109.
As funções de Go podem retornar vários 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 um quociente quanto um 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, ele exibe:
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 apenas de alguns dos valores retornados, poderá usar o identificador em branco _ para ignorar aqueles de que não precisa:
q, _ := divide(7, 3) // ignore o resto
fmt.Println("Quotient:", q)Usar _ indica ao Go para descartar esse valor retornado. Isso é necessário quando você não usa um valor, pois Go não permite variáveis não utilizadas.
Desafio
InicianteNeste desafio, você praticará como retornar vários valores de uma função em Go.
Temos uma função chamada getPersonInfo que deve retornar o nome, a idade e se a pessoa é estudante. Sua tarefa é concluir a função adicionando a instrução de retorno apropriada.
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: Retorne todos os três valores (name, age, isStudent)
}
func main() {
// Chame a função e armazene os valores retornados
name, age, isStudent := getPersonInfo()
// Imprima 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õesPratique por conta própria: Compilador de Go online