发现 Go 包中的方法
在 Go 中,正如您在第一周所注意到的,没有直接的动态迭代机制通过包的方法。与 Python 等语言不同,Go 不会内省包的内容。
这一设计决策源于 Go 严格的编译过程,该过程仅保留可执行文件中显式引用的函数和变量。任何未使用的函数或变量都会在编译时被丢弃。因此,迭代可能不完整的符号集变得毫无意义,并且不会被实现。
替代方法
要规避此限制,请考虑创建一个包含您想要操作的类型。例如,在计算器场景中,您可以定义一个数组:
var calculators = []*calculator.Calc{&calculator.Add{}, &calculator.Sub{}, &calculator.Mult{}, ...}
然后您可以迭代此数组,调用每个 Calculator.Calc 对象上的 First 和 Second 方法。虽然这种方法可能看起来有点冗长,但它允许您迭代程序已知的完整方法集。
以上是如何迭代Go包中的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!