Protocol Buffers中,通过syntax设置语法类型,有proto2和proto3两种语法。当使用proto3时,会自动生成奇怪的字段,如XXX_NoUnkeyedLiteral、XXX_unrecognized、XXX_sizecache等。

# 生成命令:protoc --go_out=. pf.proto
type Person struct {Name                 string                `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`Id                   int32                 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`Email                string                `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"`Phones               []*Person_PhoneNumber `protobuf:"bytes,4,rep,name=phones,proto3" json:"phones,omitempty"`XXX_NoUnkeyedLiteral struct{}              `json:"-"`XXX_unrecognized     []byte                `json:"-"`XXX_sizecache        int32                 `json:"-"`

而生成的上述结构体在初始化的时候稍显麻烦,如果想在生成pf.pb.go文件时,不产生上述字段,可使用gogofaster生成。

# 生成命令:protoc --gogofaster_out=. pf.proto

protoc-gen-gogofast (same as gofast, but imports gogoprotobuf)
protoc-gen-gogofaster (same as gogofast, without XXX_unrecognized,less pointer fields)
protoc-gen-gogoslick (same as gogofaster, but with generated string, gostring and equal methods)

gogofaster库的用法参考链接:https://studygolang.com/articles/19114?fr=sidebar
proto3用法参考链接:https://blog.csdn.net/weixin_33936401/article/details/88252538
Golang protobuf: https://www.jianshu.com/p/7e3dcfbc5fd7

golang proto3的message中奇怪字段XXX_NoUnkeyedLiteral相关推荐

  1. Golang 从 Json 串中快速取出需要的字段

    Golang 从 Json 串中快速取出需要的字段 在 web 编程中很多情况下接口的数据是 json 格式,在我们拿到接口的 json 数据后如何方便地从中提取出需要的字段呢?我们可以自定义一个结构 ...

  2. golang中struct字段

    golang中struct字段名首字母必须大写,不然json无法解析 golang中struct字段后面json字段要小写或小写加下划线 golang中首字母大写表示共有

  3. Golang 通过jsonTag设置Struct或者Struct数组中的字段

    原文地址声明:https://blog.csdn.net/qq_23179075/article/details/118394526 package commonimport ("fmt&q ...

  4. 【Golang】关于Go中logrus的用法

    一.标准日志库log 在日常开发中,日志是必不可少的功能.虽然有时可以用fmt库输出一些信息,但是灵活性不够.Go 标准库提供了一个日志库log. 1.快速使用 log是 Go 标准库提供的,不需要另 ...

  5. golang map嵌套struct 结构体字段 不能直接修改 解决方法

    目录 错误信息 错误原因 解决方法 错误信息 Reports assignments directly to a struct field of a map 错误原因 结构体作为map的元素时,不能够 ...

  6. Message中obtain()与recycle()

    Message中obtain()与recycle() 原文:链接 在obtain的所有重载方法中,第一行都是Message m = obtain();,即调用空参的方法. 先来看一下这个空参方法 pu ...

  7. 对话屏幕Dynpro(SE51) 屏幕元素 屏幕属性 PAI事件的触发、屏幕元素Function Code设置 屏幕流逻辑Screen Flow Logic 对话屏幕中的字段命名大小写问题

    对话屏幕Dynpro(SE51) 屏幕元素 屏幕属性 l  屏幕序号(Screen number).四个数字组成的序列号,用于在程序中确定屏幕,该序号在同一个ABAP程序内部是唯一的. l  屏幕类型 ...

  8. ARCGIS中某字段递增赋值

    ARCGIS中某字段递增赋值 在地段计算器中使用一下代码: rec=0 def autoIncrement():global recpStart = 1 pInterval = 1 if (rec = ...

  9. Crystal Reports中的字段

    字段,是Crystal Reports呈现数据的基本单元,也是报表的数据中心. 在Crystal Reports中,字段的类型有数据库字段,公式字段,参数字段,组名字段,运行总计字段,特殊字段,未绑定 ...

最新文章

  1. Elasticsearch7.x 安装及集群的配置
  2. eclipse发布web项目到生产环境的方式汇总(tomcat)
  3. NOI2015 题解
  4. 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
  5. memset()的效率以及源码分析
  6. 怎样去掉警告 log4j:WARN No appenders could be found for logger
  7. springCloud - 第10篇 - 服务间调用追踪 (zipkin 的使用)
  8. 标准化工作及相关组织
  9. np.roll的作用
  10. CCNA Cisco 安全配置
  11. scrt远程连接工具怎么切换窗口
  12. PS安装失败解决方法
  13. 最多50名同学的学号,姓名,及三科成绩,计算每位同学的平均成绩,并找出平均分的最高分和最低分
  14. 【软件工程】:非功能需求
  15. win10禁用全角,教你恢复win10系统屏蔽全角/半角快捷键的办法
  16. http协议规定的数据格式
  17. 橘色超漂亮滑动二级导航菜单
  18. 编解码器的世界 - 从字幕组说起
  19. 基于分子模拟对植物性抑菌剂抑制耐药菌的研究
  20. Abb通过OPC UA 和PLC进行通讯

热门文章

  1. 美国独立IP主机受欢迎的原因是什么?
  2. 谷歌美女副总裁:只跟聪明人在一起
  3. FileDownloader下载文件
  4. fastdfs文件服务器部署
  5. 第一章--Spring工厂设计模式消除耦合
  6. Qt:出现错误 QWindowsWindow::setGeometry: Unable to set geometry 401x48+759+477 on QWidgetWindow/‘Message
  7. pycharm 设置字体大写和高亮字体颜色
  8. 汽车电子仪表模拟测试系统研制
  9. SDCMS1.31 如何发布?
  10. VScode中,Live Server打开浏览器后一直转圈加载问题