Saltar para o conteúdo principal
Publicado em

Argumentos em Go

Partilhar:

Introdução

Os argumentos são os pilares das funções, permitindo que valores ou referências sejam passados entre funções, métodos e até mesmo pacotes em Go. São essenciais para modularizar o código e criar aplicações reutilizáveis e eficientes.

Passagem por Valor vs. Passagem por Referência

Em linguagens de programação, a forma como os dados são passados para funções pode variar. Em Go, isso não é excepção.

Passagem por Valor

Ao passar um argumento por valor, está efectivamente a dar à função uma cópia do valor original. Esta cópia é armazenada num novo local de memória.

func modificarValor(x int) {
  x = 10
}

func main() {
  y := 5
  modificarValor(y)
  fmt.Println(y)  // Imprime 5, porque uma cópia de y foi modificada, não o próprio y
}

Passagem por Referência

Em contraste, ao passar por referência, dá à função um ponteiro para o local de memória onde o valor original está armazenado, permitindo que a função modifique esse valor diretamente.

func modificarReferencia(x *int) {
  *x = 10
}

func main() {
  y := 5
  modificarReferencia(&y)
  fmt.Println(y)  // Imprime 10, porque a função modificou o valor original de y
}

Argumentos Variádicos: Flexibilidade nas Funções

Go suporta argumentos variádicos, o que significa que pode passar um número indefinido de valores para uma função. Estes são especialmente úteis quando não se sabe quantos argumentos podem ser necessários.

func imprimirNomes(nomes ...string) {
  for _, nome := range nomes {
    fmt.Println(nome)
  }
}

func main() {
  imprimirNomes("Ana", "João", "Miguel")
}

Structs como "Argumentos Nomeados"

Em algumas linguagens, é possível passar argumentos por nome. Go não tem esta funcionalidade de forma nativa, mas pode simular argumentos nomeados utilizando structs. Isto é útil para tornar o código mais legível e autoexplicativo.

type Config struct {
  Nome  string
  Idade int
}

func configurarUtilizador(config Config) {
  fmt.Printf("Nome: %s, Idade: %d\n", config.Nome, config.Idade)
}

Porque é que os Argumentos são Cruciais em Go?

Os argumentos são a espinha dorsal das funções em Go. Permitem modularidade, reutilização e escalabilidade. Ao compreender profundamente como os argumentos funcionam, é possível escrever código mais eficiente, evitando armadilhas comuns e erros.

Conclusão

A gestão eficaz de argumentos é crucial para o desenvolvimento em Go. Seja a passar por valor, por referência, a utilizar argumentos variádicos ou a simular argumentos nomeados com structs, a capacidade de manipular e compreender argumentos é uma competência vital para todos os programadores Go.

Happy coding!