小编Jac*_*cob的帖子

如何像在 Java 中一样在 Go 中传递方法引用?

我正在将我的应用程序从 Java 重写为 Go,我知道这些语言以及范式完全不同,但我仍然设法转换几乎所有内容。

不幸的是,我无法将通用函数作为参数传递给另一个函数。在 Java 中它看起来像这样:

我有一个界面:

public interface Parser<T> {
    public T parse(String line);
}
Run Code Online (Sandbox Code Playgroud)

fetch然后我在通用方法中使用这个接口

public static <T> List<T> fetch(Parser<T> parser) {
    ...
    parser.parse(someLine);
    ...
    return the list of generic types
}
Run Code Online (Sandbox Code Playgroud)

那么解析器方法如下所示:

class Parser{
    static Foo ParseFoo(String line){
        ...
        some custom parsing
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

List<Foo> list = fetch(Parser::ParseFoo);
Run Code Online (Sandbox Code Playgroud)

我如何在 Go 中实现这一目标?

我尝试过声明通用接口、通用函数,但我无法理解这一点。

generics go

7
推荐指数
1
解决办法
216
查看次数

标签 统计

generics ×1

go ×1