问题标签 [gob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
439 浏览

go - 使用 gob 解码时缓冲区错误中的额外数据 - golang

我正在使用从名为“bitcask”的键/值数据库中获取的几个对象进行解码。当我尝试逐个解码所有这些时,我从 gob 解码器中收到“缓冲区中的额外数据”错误,但仅针对添加到数据库中的第一个元素,并且仅在我已经至少提取一次之后。

我究竟做错了什么?

注意:每次调用 API 端点时,都会为数据库中的每个 ID 调用“Get”函数。

我正在编码/解码的结构如下:

此外,当我每次调用“Get”函数时尝试使用新的解码器和缓冲区时(正如我在对类似问题的回答中看到的那样),解码操作会导致以下错误:gob: unknown type id or corrupted data.

完整源代码参考此链接: https ://github.com/NicoNex/ladybug

0 投票
1 回答
64 浏览

go - 使用 gob 解码 rpc 回复的错误

问题:如果结构的字段在 rpc 调用后为零,则不会用新值替换。这是最小的代码示例:

输出:[{225} {158}]

我认为这是 gob 格式的问题,但我不确定。有人知道如何解决这个问题吗?

0 投票
0 回答
45 浏览

go - 尝试编组和解组 libp2p AddrInfo

我正在使用 libp2p Go 库来制作 p2p 网络堆栈。

我需要将消息单播给我网络上的其他对等方。我想将 AddrInfo 结构存储在我单播的消息中,以便我可以发回响应。

以下是 libp2p 库代码:

AddrInfo 结构包含

多地址如下

这是我使用 libp2p 库的代码:

我像这样将它包含在我的消息结构中

当我编组我的消息结构然后尝试解组时,我收到以下错误:

我无法编辑 libp2p 源代码,但需要在我的结构中添加 AddrInfo。

0 投票
0 回答
50 浏览

go - func与receiver和param golang的区别

我尝试为 struct Item 创建 marshal func。

所以问题是,为什么第一个示例为 goroutine 提供了 stackoverflow,而第二个示例可以正常工作?

  1. 带接收者的调用方法
  1. 这是按值传递。
0 投票
1 回答
353 浏览

sockets - 使用 GOB 进行连续编码/解码

我是 Golang 套接字编程的新手。当我尝试从客户端向服务器发送一条消息时,它运行良好。但是,当我尝试发送 10 条连续消息时,出现错误。要搜索的任何线索/关键字。请找到随附的示例代码。

服务器.go

客户端.go

屏幕:

0 投票
1 回答
46 浏览

go - 如何使用 gob.Encoder() 定义带有 interface{} 的发送/接收函数

我需要使用包定义一个Send/Receive函数。gob

Send()简单定义如下:

如下Receive

我将这些函数与各种类型一起使用:结构、具体类型、iota ......我在调用Receive方法后立即检查接收到的类型。

但是,不幸的是,我没有到达检查断点。这些方法 ( Send/Receive) 定义错误。尽管所有发送的项目都已导出,但我在接收方获得了一个<nil>指针 ( )。panic: Receiving empty Package

目前,我正在尝试发送int以下定义的类型:

我已经阅读了很多文档,但无法彻底理解这个问题。您能否提供一个简洁明了的解释。

0 投票
0 回答
80 浏览

go - Golang - Gob over TCP 的不稳定性

使用 gob 进行 TCP 通信时,我遇到了不稳定的问题。

主要问题是,如果我“快速”传输数据,我要么在服务器终止连接时出错,要么包根本没有到达服务器。现在,如果我在包之间添加 20 毫秒的延迟,一切都会按预期运行。

可悲的是,我无法将它链接到操场,因为我在三个不同的库中运行它,但我已经插入了基本/罪魁祸首代码。

我的猜测是,如果我没有延迟计时器,我将覆盖流。有任何想法吗?

更新:通过将接收器换成 bufio.NewReader(c.socket) 我实际上能够得到一个错误:“gob:未知类型 id 或损坏的数据”这有点像https://github.com/的相同问题golang/go/issues/1238#event-242248991

0 投票
4 回答
242 浏览

go - gob中的字符串编码/解码

我关注了 https://blog.golang.org/gob链接。并编写了一个示例,其中结构包含所有字符串数据。这是我的示例:

玩golang: https: //play.golang.org/p/3aj0hBG7wMj

预期输出:

实际输出

我不知道为什么输出中缺少“pythagoras”字符串。当我在结构中有多个字符串、整数数据并使用 gob 处理时,我观察到了类似的行为。

如何处理字符串?我的程序有什么问题?

0 投票
1 回答
192 浏览

go - 如何使用 gob 编码将结构编码为字节切片并将字节切片解码回原始结构?

我正在尝试将结构编组为字节(通过 gob 编码),然后将这些字节解组回原始对象。我得到了意想不到的结果(对象没有得到正确的值)。请帮我纠正程序。

输入:

输出:

预期输出:

0 投票
1 回答
104 浏览

go - Go 并发:使用 gob.encode 或 json.Marshal 来避免锁开销是一种理想的做法吗?

我有一个大而深嵌套的共享结构。我的程序的每个 goroutine 都可能使用结构的不同部分、切片、映射等。更糟糕的是,所有这些 goroutine 都执行长操作,这意味着为此使用大锁可能不是一个好主意共享结构。因此,我想出了一个想法,即在访问结构的一部分之前锁定结构,然后对其进行编码,一旦编码完成,goroutine 就可以释放锁并解码数据。这样,单个 goroutine 不会长时间持有锁。问题是:我不确定这是否是一个好习惯,有没有更好的方法来解决这类问题?或者有没有更好的意识形态来解决这类问题?