想要在proto3中定义service,及其service的method。然后在method后面加上特殊注释,通过这个特殊注释来动态生成代码。
下面是测试代码:
import (
"github.com/golang/protobuf/protoc-gen-go/descriptor"
"github.com/jhump/protoreflect/desc/protoparse"
)
func parseProto(filePath string) {
p := protoparse.Parser{
IncludeSourceCodeInfo: true,
}
fds, err := p.ParseFiles(filePath)
if err != nil {
log.Errorf("parse error:%+v", err)
return
}
f1 := fds[0]
services := f1.GetServices()
s1 := services[0]
methods := s1.GetMethods()
m1 := methods[0]
log.Println( m1.GetSourceInfo().GetLeadingComments() ) // 方法的注释
}
感谢yif同学提供指导。
下次试试用 option 标签获取元数据。