Tôi mới đến Go
và cũng mới đến khái niệm reflection
, nhưng nên và thể việc sử dụng reflect gói thể tránh được trong Go
? Có tình huống nào mà reflect
không thể tránh khỏi?Nên tránh sử dụng phản chiếu trong Go?
Trả lời
Có một vài lĩnh vực vấn đề nơi phản chiếu làm cho nó dễ dàng hơn để viết thư viện tái sử dụng:
- marshalling/unmarshalling, rất nhiều ví dụ trong các thư viện chuẩn, ví dụ
encoding/json
,encoding/xml
- định dạng, ví dụ:
text/template
,html/template
,fmt.Printf
.
Tuy nhiên có một giá bạn phải trả cho việc sử dụng phản ánh: lỗi thời gian
- biên dịch trở nên lỗi thời gian chạy (ví dụ
fmt.Printf("%d", stringVariable)
) - hiệu suất trở nên tồi tệ hơn
Rất thường là một giải pháp thay thế tồn tại mà không yêu cầu sự phản chiếu như tạo mã, được sử dụng bởi các thư viện marshalling như protobuf hoặc tiết kiệm.
Tôi đồng ý với @volker rằng bạn chỉ nên sử dụng sự phản chiếu khi bạn biết rằng nó sẽ đơn giản hóa mã đã tồn tại và nhận thức được mọi nhược điểm.
Bạn nên tránh phản chiếu.
Một số gói (ví dụ: fmt) không thể được triển khai mà không phản ánh vì bạn không thể phân loại trên tất cả các loại hiện có và sắp tới.
Nếu bạn mới sử dụng Go: Tránh xa sự phản chiếu.
Tôi thấy, cảm ơn phản hồi của bạn, được đánh giá cao! – linirod
- 1. Tại sao tôi nên sử dụng lệnh GO trong Sybase?
- 2. Lấy tên hàm sử dụng sự phản chiếu trong Golang
- 3. Nhận loại sử dụng phản chiếu
- 4. Sử dụng Phản chiếu trong mẫu nhà máy
- 5. Tôi có nên tránh sử dụng Monad không?
- 6. Tại sao tôi nên tránh sử dụng Dispatcher?
- 7. Phản hồi HTTP Thời gian trong Go
- 8. Gói Go có nên sử dụng log.Fatal và khi nào không?
- 9. Tham chiếu đến các chuỗi ký tự trong Go
- 10. Có cách nào tốt đẹp để tránh sử dụng sự phản chiếu để điền vào ListView ảo của tôi không?
- 11. Đặt chỉ mục lát bằng cách sử dụng phản ánh trong Go
- 12. Android/Java: Gọi phương thức sử dụng phản chiếu?
- 13. loại thuộc tính hoặc lớp học sử dụng phản chiếu
- 14. Xác định xem tham số có sử dụng "params" sử dụng phản chiếu trong C# không?
- 15. Truy cập phản hồi HTTP dưới dạng chuỗi trong Go
- 16. Gọi phương thức tĩnh sử dụng phản chiếu
- 17. Sử dụng phản chiếu để gọi dịch vụ web ASP.NET
- 18. Sử dụng C# với OpenOffice thông qua sự phản chiếu
- 19. Cách sử dụng giao diện trong Go
- 20. Tại sao tôi nên tránh sử dụng ClassType trong mã ứng dụng?
- 21. Khi nào nên sử dụng các phép chiếu Hibernate?
- 22. Tại sao nên tránh @@ class_variables trong Ruby?
- 23. Sử dụng OpenGL từ Go
- 24. Tôi có nên tránh sử dụng "!" trong câu lệnh if trong Java?
- 25. Parse Go tem thời gian sử dụng Go
- 26. Phản chiếu thực sự chậm đến mức tôi không nên sử dụng nó khi nó có ý nghĩa?
- 27. Java - Nhận tham chiếu đến một lớp tĩnh sử dụng sự phản chiếu
- 28. Tránh gọi mã người dùng đến Phản ánh trong C#
- 29. Tại sao chúng ta nên tránh sử dụng các biến lớp @@ trong đường ray?
- 30. Tôi có nên tránh sử dụng! Quan trọng trong CSS không?
Cảm ơn phản hồi kostya :) – linirod