Trong Go, làm thế nào để bạn kiểm tra xem một đối tượng có phản ứng với một phương thức không?Làm thế nào để kiểm tra xem một đối tượng có một phương pháp cụ thể?
Ví dụ, trong Objective-C này có thể đạt được bằng cách thực hiện:
if ([obj respondsToSelector:@selector(methodName:)]) { // if method exists
[obj methodName:42]; // call the method
}
Tôi thực sự muốn khuyến khích mọi người sử dụng các loại khẳng định chứ không phải phản ánh (hoặc, tốt hơn nếu bạn không có nhu cầu khác để đặt tên một iface một phương thức, một giao diện ẩn danh được chỉ định nội dòng như uraimo được đề xuất). Nhanh hơn, ngắn hơn, không nhập, không có chuỗi như tên phương thức. – twotwotwo
@twotwotwo đã đồng ý. Tôi nghĩ rằng phản ánh chỉ thực sự có ý nghĩa nếu bạn đang đi để làm rất nhiều kiểm tra dẫn đến quyết định thời gian chạy về cách cư xử. Nếu bạn chỉ muốn xem liệu bạn có thể gọi một phương thức hay không, tùy chọn iface đơn giản hơn nhiều và nếu bạn chỉ sử dụng nó ở một nơi thì khai báo ẩn danh nội tuyến cũng tốt hơn. – evanmcdonnal