簡體   English   中英

協議緩沖區格式的匿名結構

[英]Anonymous struct in Protocol Buffer format

給定這樣的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解組。

為了實現所需的功能並擺脫匿名結構,我認為您應該在House中聲明房間消息,然后將其分配為重復消息,如下所示:

message House {
  message room {
    string name = 1;
    int32 windows = 2;
    int32 doors = 3;        
  }
  string address = 1;
  repeated room rooms = 2;
}

它將與go中的以下結構相對應:

type House struct {
    name         string                     
    rooms       []*room
}

type room struct {
    name string
    windows int32
    doors int32
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM