¿Cuál es el significado de '*' y '&' en Golang?

Soy nuevo en Golang y estoy haciendo elhttp://tour.golang.org/. ¿Alguien podría explicarme?líneas 1,3,5 y 7 esta función, especialmente, ¿qué hacen '*' y '&'? Quiero decir, al mencionarlos en una declaración de función, ¿qué se supone / se espera que hagan? Un ejemplo de juguete:

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 son punteros como los que tenemos en C ++. Pero no puedo conectar esos conceptos con lo que tenemos aquí. En otras palabras, qué hacen '*' y '&' cuando los uso en la declaración de función en Go.

Editar:&nbsp;Sé lo que significan referencia y desreferencia. Lo que no puedo entender es: cómo podemos usar el puntero a una función es Golang. por ejemplo, líneas 1 y 7, ¿qué hacen estas dos líneas? declaramos una función llamada intial1 que devuelve un puntero? y en la línea 7, lo llamamos con argumentos usando la función de retorno.