Ho letto le esercitazioni Go and Go efficaci e alcune fonti, ma il meccanismo esatto dietro la sintassi interface {}
è Go è in qualche modo misterioso per me. L'ho visto per la prima volta quando ho provato ad implementare heap.Interface
e sembra essere un contenitore di qualche tipo (mi ricorda una monade un po ') da cui posso estrarre valori di tipo arbitrario.Qual è il ruolo della sintassi "interface {}" in Go?
Perché è stato scritto per utilizzare questo? È una sorta di soluzione alternativa per i generici? C'è un modo più elegante per ottenere valori da un heap.Interface
piuttosto che doverli rinominarli con heap.Pop(&h).(*Foo)
(nel caso di indicatori di heap per digitare Foo)?
Ah, è un tipo anonimo! Capito. Grazie! Credo che userei qualche tipo di riflessione per interrogare il tipo tenuto. Non ho ancora lavorato con quella parte; finora ho usato la sintassi '' (oddly to me) '. ()' per recuperare i valori. –
C'è un pacchetto reflect che può permetterti di interrogare il tipo, oppure puoi usare un interruttore di tipo, che assomiglia ad un normale switch ma i casi sono tipi. Oppure puoi semplicemente usare la versione non errante di un asserzione di tipo (ad esempio 'value, ok: = foo. (Type)') –