是一个空字符串 `[]byte("")` 序列化为 `\0`

Is an empty string `[]byte("")` serialized as `\0`

我们的代码库是 Go 和 C++。我是一名C++程序员,所以我可以理解Go,但我不是很了解它。

我们是一家嵌入式商店,Go 人员正在序列化一个字符串并将其发送到 I2C 缓冲区。似乎一个空的 Go 字符串作为 [=10=] 附加到 I2C 事务,而不是“无”。

我在 Go 文档中看到的所有内容都只描述了如何测试它(即 str == ""len(str) > 0),但似乎没有描述它是如何序列化的。

作为 C++ 程序员,[=10=] 是有意义的,因为它是字符串的空终止符,甚至只是 NULL,将其存储在变量中是有意义的。有人可以确认或否认吗?

Go 语言没有指定如何序列化 Go 值。 Go 标准库中的编码器以不同的方式序列化空字符串。 gob encoder omits empty strings. The JSON 编码器将空字符串写为“”(除非被告知省略空字符串)。

内存中的字符串值没有空终止符。