Go consente di definire metodi separatamente dalla struct/datatype su cui lavorano. Significa solo flessibilità nel collocare le definizioni del metodo o qualcosa di più?Qual è il vantaggio di definire i metodi Go lontano dalle definizioni di struct?
Ho sentito il sistema di struct/methods di Go confrontato con il patch di scimmia, ma se ho capito bene, non si possono davvero aggiungere metodi a nessun tipo esistente (struct), poiché i metodi devono risiedere nello stesso pacchetto del genere. Vale a dire. puoi scimmiettare solo i tipi che sono sotto il tuo controllo comunque. O mi sta sfuggendo qualcosa?
In quali casi si definirà un tipo e i relativi metodi in file di origine separati (o in parti diverse dello stesso file sorgente)?
Non vedo come si aggiungano metodi a un tipo esistente: il tipo esistente è "uint" e, se ho capito correttamente, "Aggiungi" non funzionerà con "uint" -s. – Aivar
Sì, ho preso una scorciatoia, non è possibile aggiungere un metodo a un tipo all'esterno del pacchetto, ma è possibile definire un nuovo tipo basato su uno esistente e aggiungere metodi a questo tipo. È quindi banale eseguire il cast del tipo base nel tipo potenziato per utilizzare questi metodi (ad esempio, cosa hanno fatto gli autori Go con il tipo StringSlice nel pacchetto di ordinamento). – mna