给出这样的Go结构:
type House struct {
Address string
Rooms []struct {
Name string
Windows int
Doors int
}
}
或等效的JSON表示:
{
"address": ""
"rooms": [
{
"name": ""
"windows": 0
"doors": 0
}
]
}
等效的协议缓冲区表示是什么?
这或多或少是我想要做的(虽然不是有效的Proto语法):
message House {
string address = 1;
repeated message {
string name = 3;
int32 windows = 4;
int32 doors = 5;
} rooms = 2;
}
相反,这样做是有效的,但由于原始rooms
切片包含匿名对象,因此无法准确表示数据:
message House {
string address = 1;
repeated room rooms = 2;
}
message room {
string name = 1;
int32 windows = 2;
int32 doors = 3;
}
更新:我想我误解了消息声明是如何工作的。我提供的第二个例子应该足够,实际上不会干扰JSON解组。
答案 0 :(得分:0)
为了实现你想要的东西并摆脱匿名结构,我认为你应该在House内声明房间信息,然后将其分配为重复,如下所示:
type House struct {
name string
rooms []*room
}
type room struct {
name string
windows int32
doors int32
}
它将对应于go中的以下结构:
{{1}}