Qual é o significado de '*' e '&' em Golang?

Eu sou novo em Golang e estou fazendo ohttp://tour.golang.org/. Alguém poderia me explicarlinhas 1,3,5 e 7 essa função, especialmente o que '*' e '&' fazem? Quero dizer, mencionando-os em uma declaração de função, o que eles devem / devem fazer? Um exemplo de brinquedo:

1: func intial1(var1 int, var2 int, func1.newfunc[]) *callproperfunction {
2:
3: addition:= make ([] add1, var1)
4: for i:=1;i<var2;i++ {
5:   var2 [i] = *addtother (randomstring(lengthofcurrent))
6:   }
7: return &callproperfunction {var1 int, var2 int, func1.newfunc[], jackpot}
8: }

Parece que eles são indicadores como o que temos em C ++. Mas não consigo conectar esses conceitos ao que temos aqui. Em outras palavras, o que '*' um 'e' fazem quando os uso na declaração de função no Go.

Editar: Eu sei o que significa referência e desreferência. O que não consigo entender é: como podemos usar o ponteiro para uma função é Golang. por exemplo, linhas 1 e 7, o que essas duas linhas fazem? declaramos uma função chamada intial1 que retorna um ponteiro? e na linha 7, chamamos isso de argumentos usando a função de retorno.

questionAnswers(3)

yourAnswerToTheQuestion