Go: Múltiplos Valores de Retorno

Há alguns anos eu comecei a estudar Go, uma linguagem open-source, focada em alto desempenho, desenvolvida pelo Google e que tem uma syntaxe bem próxima da linguagem C.

Meus estudos se limitaram a projetos pessoais (que posso demonstrar aqui em breve) e muitos testes, mas algumas coisas que aprendi enquanto estava estudando, me fizeram mudar um pouco a forma que eu vejo e escrevo software.

Os pontos que irei detalhar nesta série de posts são algumas das features mais comuns da linguagem, e podem parecer bem simples, mas se bem utilizados - até em outras linguagens, podem deixar o seu código muito mais fácil de ler e manter.

Retornos múltiplos

Esta feature não é nenhuma novidade pra quem já programou em Python, por exemplo. Mas isso nos possibilita ter acesso a várias abordagens e várias formas de implementação de novos recursos.

Um dos mais conhecidos, e até adotado como convenção pela linguagem é o gerenciamento de erros, através do pacote errors.

No exemplo a seguir, mostramos como seria o retorno múltiplo de valores em uma função, e a forma de gerenciar erros em Go.

package main

import (
	"errors"
	"fmt"
)

func greaterThanTen(number int) (bool, error) {
	if number > 10 {
		return true, nil
	}

	return false, errors.New("The number is not greater than 10")
}

func main() {
	isntGreaterThanTen, err := greaterThanTen(5)
	isGreaterThanTen, err2 := greaterThanTen(15)

	fmt.Println(isntGreaterThanTen, err) // => false, The number is not greater than 10
	fmt.Println(isGreaterThanTen, err2)  // => true, nil
}

Para desconsiderar algum dos múltiplos parâmetros, você pode utilizar o _, já que em Go, você não pode declarar um variável e não utilizá-la - isso geraria um erro de compilação.

...

func main() {
	isGreaterThanTen, _ := isGraterThanTen(15)
	fmt.Println(isGreaterThanTen)  // => true
}
Compartilhe:
Buy Me A Coffee