🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁
🦄 博客首页——🐅🐾猫头虎的博客🎐
🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐
🌊 《100天精通Golang(基础入门篇)》 🐅 学会Golang语言,畅玩云原生,走遍大小厂~💐
🐅🐾猫头虎建议Go程序员必备技术栈一览表📖:
☁️🐳
Go语言开发者必备技术栈☸️
:
🐹 GoLang | 🌿 Git | 🐳 Docker | ☸️ Kubernetes | 🔧 CI/CD | ✅ Testing | 💾 SQL/NoSQL | 📡 gRPC | ☁️ Cloud | 📊 Prometheus | 📚 ELK Stack
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🐅🐾🍁🐥
文章目录
- 🐅🐾猫头虎建议Go程序员必备技术栈一览表📖:
- 2020年3月2日 Go生态洞察:Go协议缓冲区的新API发布
- 📜 摘要
- 🚀 引言
- 🌐 正文内容
- 🌟 新API的动机
- 📚 反射的实现
- 🔄 API版本
- 🌱 额外的新特性
- 📈 总结知识要点
- 📌 总结
- 🔮 下一篇预告
- 原创声明
-
原创作者: 猫头虎
-
作者wx: Libin9iOak
-
作者公众号: 猫头虎技术团队
2020年3月2日 Go生态洞察:Go协议缓冲区的新API发布
📜 摘要
嗨,我是猫头虎,热衷于分享最新的技术动态。今天,我们来聊聊Go的一个重大更新——Go协议缓冲区(Protocol Buffers)的全新API。这是一个跨时代的改进,为Go开发者提供了更强大、更灵活的数据交换格式处理能力。让我们深入了解它的动机、特性和实现吧!
🚀 引言
2020年3月2日,Go团队宣布了对Go协议缓冲区API的重大修订发布。这是Google通用的、语言中立的数据交换格式的新阶段。自2010年首次推出以来,这个包随着Go的发展而发展,其用户需求也日益增长。新API的发布标志着对现有API的一个重大改进,旨在解决过去十年中出现的一系列问题。
🌐 正文内容
🌟 新API的动机
新API的开发是基于以下几点考虑:
- 反射的需求:许多人希望编写程序,使用反射来检查协议缓冲区消息。但现有的
reflect
包在协议缓冲区类型系统中遗漏了信息。 - 自定义数据结构的需求:用户希望使用除了协议缓冲区编译器生成的数据结构之外的其他结构,如动态消息类型。
proto.Message
接口的问题:这个接口对于生成的消息类型的行为描述很少,导致使用时程序崩溃或行为不可预测。
📚 反射的实现
新实现的旗舰功能是反射。类似于reflect
包为Go类型和值提供视图,google.golang.org/protobuf/reflect/protoreflect
包为协议缓冲区类型系统提供了值的视图。
例如,我们可以定义一个.proto
文件来标注字段是否包含敏感信息,然后编写Go函数来移除所有敏感字段。这个过程展示了协议缓冲区反射的实际应用。
🔄 API版本
原始版本的Go协议缓冲区被称为APIv1,新的为APIv2。APIv2与APIv1不兼容,因此需要使用不同的模块路径。
github.com/golang/protobuf
是APIv1。google.golang.org/protobuf
是APIv2。
🌱 额外的新特性
protojson
包:将协议缓冲区消息转换为JSON。dynamicpb
包:为运行时派生的协议缓冲区类型提供proto.Message
的实现。protocmp
包:提供比较协议缓冲区消息的功能。protogen
包:支持编写协议编译器插件。
📈 总结知识要点
要点 | 描述 |
---|---|
反射实现 | 新API提供了 |
协议缓冲区类型系统的反射能力。 |
| API版本变化 | 引入了APIv2,与APIv1不兼容,使用不同的模块路径。 |
| 新特性 | 包括protojson
、dynamicpb
、protocmp
和protogen
等。 |
| 目的与目标 | 提高API的效用,解决APIv1的不足,保持APIv1的支持。 |
📌 总结
这次对Go的协议缓冲区API的重大修订,不仅提供了先进的反射能力和定制消息实现,还清理了API表面,使其更加整洁。我们的目标是在保留旧API的优点的同时,解决其不足之处。本文已被猫头虎的Go生态洞察专栏收录,详情点击这里。
🔮 下一篇预告
敬请期待我的下一篇文章,我们将探讨“Go、Go社区和大流行病”,深入了解Go在这个特殊时期的发展和社区的响应。不要错过!�
原创声明
======= ·
-
原创作者: 猫头虎
-
作者wx: Libin9iOak
-
作者公众号: 猫头虎技术团队
学习 | 复习 | Go生态 |
---|---|---|
✔ | ✔ | ✔ |
本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。
作者保证信息真实可靠,但不对准确性和完整性承担责任。
未经许可,禁止商业用途。
如有疑问或建议,请联系作者。
感谢您的支持与尊重。
点击
下方名片
,加入IT技术核心学习团队。一起探索科技的未来,洞察Go生态,共同成长。