我正在尝试查看Go是否支持我在其他面向对象语言(例如Java)中使用的语言特性。我想定义一些接口,并将支持其中一些接口的对象作为参数传递给函数。
在Java中,我可能会定义一堆单方法接口,例如HasAdd、HadMul、HasSub、HasDiv、HasSin、HasCos、HasTan等等。
然后我可能会定义一个通用方法,其参数T被定义为
我知道go不支持泛型。但是它能做类似于func(HasSin & HasAdd obj)这样的事情吗?它似乎应该支持这种行为。只是我还没有找到肯定或否定的文档。
我看过这篇文章:https://golangbot.com/interfaces-part-2/,文章底部有类似的示例,但它确实使用了一个中间接口。
在Java中,我可能会定义一堆单方法接口,例如HasAdd、HadMul、HasSub、HasDiv、HasSin、HasCos、HasTan等等。
然后我可能会定义一个通用方法,其参数T被定义为
<T extends HasSin & HasAdd>
。我将T传递给该方法。请注意,我不必定义一个包含HasSin和HasAdd的中间接口。(这很棒,因为n个接口需要2^n个中间接口才能覆盖所有情况。)我知道go不支持泛型。但是它能做类似于func(HasSin & HasAdd obj)这样的事情吗?它似乎应该支持这种行为。只是我还没有找到肯定或否定的文档。
我看过这篇文章:https://golangbot.com/interfaces-part-2/,文章底部有类似的示例,但它确实使用了一个中间接口。