簡體   English   中英

如何在協議緩沖區中有自定義字符串方法?

[英]How to have custom String method in Protocol Buffer?

假設我有一個原型文件,例如:

message Sample {
  Test t = 1;
}

message Test {
  string s = 1;
}

我想在類型Test上擁有自己的自定義String方法,但是由於protoc的自動生成代碼已經包含String方法,因此我的自定義String方法會導致編譯器錯誤。

值得一提的是,自動生成的String方法是:

func (x *Test) String() string {
    return protoimpl.X.MessageStringOf(x)
}

上面的代碼只是打印值本身,但我想知道是否有任何方法可以使用我的自定義String實現?

我認為您不應該亂用生成的pb文件,而是使用包裝器結構。

擊中我的第二個選擇是,也許您可以為 protoc 編寫一個插件,並在給出需要的 struct 標記時使其使用這些方法。

type Wrapper struct{
   pb.Sample
}

func (w Wrapper) String() string{
  ...
}

我想到的第二個選項是,也許您可以為 protoc 編寫一個插件,並在需要的 struct 標簽給出時使用這些方法。

您可以替換*.pb.go文件本身中的實現。 但是,如果原始 proto 文件在修改文件所在的相同路徑下編譯,則更改將消失。

暫無
暫無

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

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