Functions
Uma function do Go pode retornar mais de um valor diretamente — sem precisar envolvê-los em uma tupla ou objeto primeiro. Isso é usado constantemente em toda a standard library do Go, mais notavelmente para retornar um resultado junto com um error.
main.go
Teste você mesmo →package main
import "fmt"
func divide(a, b int) (int, int) {
return a / b, a % b
}
func main() {
quotient, remainder := divide(17, 5)
fmt.Println(quotient, remainder)
}Output
3 2
Múltiplos valores de retorno na prática
Como múltiplos valores de retorno fazem parte da própria linguagem, uma function como minMax abaixo pode retornar tanto o menor quanto o maior número de um slice em uma única chamada, e quem chama apenas desempacota os dois com :=.
main.go
Teste você mesmo →package main
import "fmt"
func minMax(numbers []int) (int, int) {
min, max := numbers[0], numbers[0]
for _, n := range numbers {
if n < min {
min = n
}
if n > max {
max = n
}
}
return min, max
}
func main() {
low, high := minMax([]int{4, 8, 15, 16, 23, 42})
fmt.Println(low, high)
}Output
4 42
A seguir: controle de fluxo — if/else, e a única palavra-chave de loop do Go.
Practice exercise
Escreva uma function multiply(a, b int) int que retorne a * b, depois imprima multiply(6, 7).