用于通过 RPC 传递匿名函数的 GobEncoder

标签 go rpc gob

我正在尝试构建一个将在多台机器上执行功能的系统,通过 RPC 将功能匿名传递给每台工作机器(la MapReduce)以在某些数据子集上执行。 Gob 不支持编码函数,尽管 docs对于 GobEncoder 来说,“实现 GobEncoder 和 GobDecoder 的类型可以完全控制其数据的表示,因此可能包含诸如私有(private)字段、 channel 和函数之类的东西,这些东西通常不能在 gob 流中传输”所以这似乎是可能的。

这可能如何运作的任何例子?我不太了解应该如何使用 Gob 完成这种编码/解码。

最佳答案

恕我直言,这行不通。虽然确实如果您的类型实现了 Gob{En,De}coder 它可以(反)序列化结构的未导出字段它仍然不可能(反)序列化代码:Go 是静态编译和链接的,没有 运行时代码生成功能(这将规避编译时类型 安全)。

简而言之:您不能序列化函数,只能序列化数据。您的 worker 必须提供 你不想执行的功能。查看编码/rpc。

关于用于通过 RPC 传递匿名函数的 GobEncoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16271026/

相关文章:

go - 如何将 JWT 身份验证添加到 swagger (go + echo + swaggo/swag)

java - Web 服务代理中的 SSL 证书问题

pointers - 在 golang 中具有指向 0 值的指针的深度复制结构

java - 如何将数据从一个java程序发送到另一个java程序

Java RMI 客户端尝试加载实现而不是接口(interface)

go - 反序列化未知的 Go 的 gob blob

go - gob.Register 方法的目的是什么?

unit-testing - golang中可以跳过init方法吗?

没有 channel 的 golang errgroup 示例

windows - 在 Visual Studio Code 中运行 Golang