我现在定义的proto文件如下
syntax = "proto2";
message Test1 {}
message Test2 {
required Test1 test1 = 1;
}
message Test3 {
required Test2 test2 = 1;
}
这样我就会得到一个 go文件,大概内容是
type Test3 {
Test2 *Test2
}
type Test2 {
Test1 *Test1
}
type Test1 {}
然后当我使用的时候,就会非常麻烦
var test3 = new(Test3)
test3.Test2 = new(Test2) // 必须初始化指针
test3.Test2.Test1 = new(Test1) // 同上
fmt.Printf(test3.Test2.Test1) // 现在才能使用
如上所示,我为了使用Test1得初始化很多次,因为业务的问题,层级可能有四五层,这样对于编码来说,太麻烦了,我现在想到的是有两个思路
- 找到一个方法,一次性初始化指针本身已经他下面的指针
- 找到 protobuf是否有不生成指针,只生成结构体的方法,或者protobuf是否有生成第一种思路的函数
但是对于这两条路都没走通,请各位指教。