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
}