2015-12-20 13 views

risposta

8

ci sono un paio di domini problema in cui la riflessione rende più facile scrivere le librerie riutilizzabili:

  • marshalling/unmarshalling, un sacco di esempi nella libreria standard, per esempio encoding/json, encoding/xml
  • formattazione, ad es. text/template, html/template, fmt.Printf.

Tuttavia c'è un prezzo da pagare per l'utilizzo di riflessione: errori di

  • compilazione diventano errori di runtime (ad esempio fmt.Printf("%d", stringVariable))
  • prestazioni diventa peggio

Molto spesso una soluzione alternativa esiste che non richiede la riflessione come la generazione del codice, che viene usata dalle librerie di marshalling come protobuf o parsimonia.

Sono d'accordo con @volker che si dovrebbe usare la riflessione solo quando si sa che semplificherà il codice già esistente e consapevole di tutti i lati negativi.

+0

Grazie per il feedback kostya :) – linirod

7

Evitare la riflessione.

Alcuni pacchetti (ad es. Fmt) non possono essere implementati senza riflessione poiché non è possibile eseguire l'attivazione di tipi di tutti i tipi esistenti e imminenti.

Se siete nuovi a Go: tenetevi lontano dal riflesso.

+0

Vedo, grazie per il vostro feedback, molto apprezzato! – linirod