protobuf中的omitempty欄位

2021-08-18 04:05:43 字數 662 閱讀 9857

一句話總結:帶有omitempty欄位的成員,如果該字段為nil(字串」「,空陣列等),則打包的json結果不會有這個字段。

我們把proto檔案自動生成go**時會出現omitempty欄位,如下

type reply struct
直接上**

package main

import (

"encoding/json"

"fmt"

)type person struct

func main()

data, err := json.marshal(p1)

if err != nil

// p1 沒有為addr賦值,這裡列印出來不會出現addr的字段

fmt.printf("%s\n", data)

p2 := person

data2, err := json.marshal(p2)

if err != nil

// p2 則會列印所有

fmt.printf("%s\n", data2)

}

執行結果

process finished with

exit code 0

Protobuf 中的型別檢查

在使用protobuffer時,如果定義乙個訊息如下 enum my enum enum type1 1,enum type2 2 message my msg required my enum test enum 1 那麼,在protoc生成的 中,在賦值時 set test enum const...

protobuf在網遊中的用法

訊息傳遞過程 client gated zoned cs訊息結構 cpp view plaincopy 01.message head 02.05.06.message body 07.10.11.message csmessage 12.傳送資料格式 16bits len csmessage。ga...

ProtoBuf的Socket中應用示例

寫了乙個socket通訊下的protobuf示例,三個檔案 syntax proto3 package demo message helloprotobuf 編譯命令 protoc i cpp out helloprotobuf.proto include include include inclu...