Saltar para o conteúdo principal
Publicado em

Funções em Go

Partilhar:

Introdução

No mundo da programação, funções são blocos de código reutilizáveis que realizam uma tarefa específica. Go, sendo uma linguagem moderna e poderosa, proporciona uma variedade de características relacionadas com funções que a tornam única.

Declarando Funções

Em Go, uma função é declarada usando a palavra-chave func, seguida pelo nome da função, parâmetros (se existirem) e o tipo de retorno.

func nomeDaFuncao(parametro1 tipo1, parametro2 tipo2) tipoRetorno {
  // Corpo da função
}

Por exemplo:

func soma(a int, b int) int {
  return a + b
}

Retornos Múltiplos

Uma característica interessante de Go é a capacidade de retornar múltiplos valores de uma função.

func divisaoEResto(a int, b int) (int, int) {
  return a / b, a % b
}

Esta função retorna tanto o quociente como o resto da divisão.

Funções Anónimas e Closures

Go suporta funções anónimas, que podem formar closures. As funções anónimas são úteis quando se pretende definir uma função inline sem lhe dar um nome.

func() {
  fmt.Println("Esta é uma função anónima!")
}()

Um closure é uma função que tem acesso às variáveis do seu ambiente externo:

func contador() func() int {
  conta := 0

  return func() int {
    conta++
    return conta
  }
}

func main() {
  meuContador := contador()
  fmt.Println(meuContador()) // Imprime 1
  fmt.Println(meuContador()) // Imprime 2
}

Parâmetros Variádicos

Go também permite utilizar parâmetros variádicos, o que significa que é possível passar um número indefinido de parâmetros para uma função. São definidos usando ... antes do tipo do parâmetro.

func somatorio(numeros ...int) int {
  total := 0

  for _, num := range numeros {
    total += num
  }

  return total
}

Conclusão

As funções em Go são versáteis e poderosas, permitindo aos programadores criar código limpo, eficiente e reutilizável. Seja a tirar partido de retornos múltiplos, a usar closures ou a manipular parâmetros variádicos, dominar funções em Go é essencial para uma programação eficaz.

Happy coding!