2015-12-20 8 views

Odpowiedz

8

Istnieje kilka problemów domen gdzie odbicie sprawia, że ​​łatwiej napisać wielokrotnego użytku biblioteki:

  • rozrządowej/unmarshalling, mnóstwo przykładów w bibliotece standardowej, na przykład Formatowanie, np. encoding/json, encoding/xml
  • text/template, html/template, fmt.Printf.

Jednak nie jest cena, jaką płacisz za pomocą refleksji: błędy czasowe

  • kompilacji stać błędy runtime (np fmt.Printf("%d", stringVariable))
  • wydajność pogarsza

Bardzo często alternatywne rozwiązanie istnieje, że nie wymagają refleksji, takiej jak generowanie kodu, która jest używana przez biblioteki rozrządowe, takie jak protobuf czy oszczędzanie.

Zgadzam się z @volker, że należy używać refleksji tylko wtedy, gdy wiadomo, że uprości on już istniejący kod i będzie świadomy wszystkich wad.

+0

Dzięki za opinie kostya :) – linirod

7

Powinieneś unikać refleksji.

Niektóre pakiety (na przykład fmt) nie mogą być zaimplementowane bez refleksji, ponieważ nie można przełączać typów we wszystkich istniejących i nadchodzących typach.

Jeśli jesteś nowy w Go: Trzymaj się z dala od odbicia.

+0

Rozumiem, dziękuję za Wasze opinie, bardzo docenione! – linirod

Powiązane problemy