我有这个应用程序,其中请求根据结构中的字符串进行过滤,并使其执行不同的函数。
我的方法是使用Map将字符串映射到函数指针并执行它们。然而,想要通过反射进行过滤的队友正在争论这种方法。我们正在使用Go,它用于监控我们网站的活动。
队友方法:使用反射基于字符串切换对象,将字符串传递给函数并让函数调用相关函数。 我的方法:从字符串到函数的简单映射
感谢任何帮助。
答案 0 :(得分:3)
基于反射的自动发现的缺点是你必须要小心添加到系统中的内容,因为它可以自动拾取。
vs map方法,您需要显式公开每个函数。
当然,反射更酷,更自然神奇。但是,自动魔法并不能很好地保证安全性或长期可维护性。
另外,如果您尝试注册不匹配的函数,则不会编译map [string] func(具有特定签名)。
你会在哪里找到反射的东西,然后思考为什么它是运行时失败。