Qual a diferença entre valor e referência (ponteiro)

Hoje vamos abordar um tema muito interessante e que é comum a quase todas as linguagens, valor vs referência (também conhecida como ponteiro).

Primeiramente, não podemos nos esquecer que, cada variável que criamos, independente do seu tipo, assim como arrays, slices e maps, são espaços alocados em memória.

Outro ponto importante que temos que ter em mente é que, os parâmetros de uma função também são variáveis.

Para ajudar na explicação, vamos criar uma função com 2 parâmetros, onde o primeiro espera um valor e o segundo um ponteiro.

func ValPoint(valor string, ponteiro *string) {
    fmt.Println(valor)
    fmt.Println(ponteiro)
}
Leia mais »