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
}

E aí, curtiu? Compartilha com uma pessoa desenvolvedora que vai gostar também. 🙂