Ci sono molte risposte qui, ma nessuno di loro risponde perché questo è il caso.
Per prima cosa prendi il caso che tu abbia un * T e desideri chiamare un metodo che prenda T. Per fare questo, tutto ciò che devi fare è passare * tuoT (dove * è usato per dereferenziare il puntatore) a la funzione. Ciò è garantito perché è possibile copiare blob di memoria in una posizione nota.
Ora diciamo che hai una T e vuoi un * T. Potresti pensare che potresti semplicemente fare & e ricevere il suo indirizzo. Ma la vita non è sempre così semplice. Non c'è sempre un indirizzo statico da prendere.
Da the spec:
Per un operando x di tipo T, l'operazione indirizzo & x genera un puntatore di tipo T * a x. L'operando deve essere indirizzabile, ovvero una variabile, puntatore indiretto, o operazione di indicizzazione delle sezioni; o un selettore di campo di un operando struct indirizzabile; o un'operazione di indicizzazione dell'array di un array indirizzabile. Come eccezione al requisito di indirizzabilità, x può anche essere un letterale composito (eventualmente tra parentesi).
Forse ti starai chiedendo perché avrebbero posto queste restrizioni arbitrarie per ottenere un indirizzo di memoria. Ogni variabile deve avere qualche indirizzo di memoria, giusto? Mentre questo è vero, le ottimizzazioni possono rendere questi indirizzi piuttosto effimeri.
Ad esempio, consente di dire la variabile era all'interno di una mappa:
In questo caso, si sta effettivamente dicendo che vuoi un puntatore alla memoria che si terrà all'interno di una mappa. Ciò imporrebbe a ogni implementazione di Go di implementare la mappa in modo tale che gli indirizzi di memoria rimangano statici. Ciò limiterebbe severamente le strutture interne del runtime e offrirà agli implementatori molta meno libertà nella costruzione di una mappa efficiente.
Esistono altri esempi come i ritorni delle funzioni o le interfacce, ma è sufficiente un solo esempio per dimostrare che l'operazione non è garantita possibile.
La linea di fondo è che la memoria del computer non è semplice e, mentre si potrebbe voler dire "basta prendere l'indirizzo", non è sempre così semplice. Prendere un indirizzo che è garantito essere statico non è sempre possibile. Pertanto, non è possibile garantire che qualsiasi istanza di T possa essere trasformata in un puntatore e passata a un metodo di puntatore.
Credo che questo link ti aiuterà a trovare la risposta: https://code.google.com/p/go-wiki/wiki/MethodSets – nvcnvn