Recentemente sono incappato in una cosa correlata al ricevitore che in qualche modo molto rapidamente qualcuno sul Github mi ha trovato la risposta che stavo cercando. Giusto per spiegare, quello che volevo era essere in grado di incorporare una funzione di prima classe che aveva un ricevitore - in questo caso che era esattamente il tipo di struttura in cui volevo inserirlo. Ho trovato una soluzione alternativa utilizzando la sintassi di func di tipo Name e quindi la creazione di una funzione privata che è stata racchiusa in un ricevitore con tipo vincolato da un'interfaccia, ma questo mi consente di farlo in modo diverso: la soluzione era ingombrante e generosa.
Ecco il problema con Github:
link
Non sono stato in grado di trovare ulteriore documentazione su questo, ma essenzialmente i punti principali sono che puoi creare un campo interface {} in un tipo struct, e quindi assegnare una funzione legata a una collezione di metodi di interfaccia, come questa :
type Name Struct {
...
funcSlot interface{}
...
}
func (n *Name) FuncName() error {
return nil
}
func NewName() (n *Name) {
...
n.funcSlot = (*Name).FuncName
...
}
type NAME interface {
...
FuncName() error
...
}
Questo passaggio passa al veterinario, almeno, non ho ancora confermato che questo abbia l'effetto di passare il puntatore alla struct in modo che la funzione possa operare su ciò che effettivamente è una classe.