Sobes.tech
Junior — Middle

Como é que a passagem de argumentos é feita nas funções na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, os argumentos nas funções são passados por valor. Isso significa que, ao chamar uma função, são passadas cópias dos valores dos argumentos, e as alterações dentro da função não afetam as variáveis originais.

Se precisar alterar o valor de uma variável a partir do código chamador, passa-se um ponteiro para essa variável. Assim, a função recebe o endereço e pode alterar o valor nesse endereço.

Exemplo de passagem por valor e por ponteiro:

package main
import "fmt"

func incrementByValue(x int) {
    x = x + 1
}

func incrementByPointer(x *int) {
    *x = *x + 1
}

func main() {
    a := 5
    incrementByValue(a)
    fmt.Println(a) // Vai imprimir 5, pois foi passado por valor

    incrementByPointer(&a)
    fmt.Println(a) // Vai imprimir 6, pois foi passado um ponteiro
}