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. Eles 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 é exceção.

Passagem por Valor

Ao passar um argumento por valor, você está efetivamente dando à função uma cópia do valor original. Esta cópia é armazenada em um 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, você dá à função um ponteiro para o local de memória onde o valor original é 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 você pode passar um número indefinido de valores para uma função. Estes são especialmente úteis quando você não 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 nativamente, mas você pode simular argumentos nomeados usando 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 Argumentos são Cruciais em Go?

Argumentos são a espinha dorsal das funções em Go. Permitem modularidade, reusabilidade e escalabilidade. Ao entender profundamente como os argumentos funcionam, pode-se 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 passando por valor, por referência, utilizando argumentos variádicos ou simulando argumentos nomeados com structs, a capacidade de manipular e entender argumentos é uma habilidade vital para todos os programadores Go.

Happy coding!