登录
首页 >  Golang >  Go问答

如何使用 gogo/protobuf 获取自定义 go 类型

来源:stackoverflow

时间:2024-04-11 08:45:36 401浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何使用 gogo/protobuf 获取自定义 go 类型》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我在 .proto 文件中的代码当前如下所示:

message category {
    int64 categoryid = 1;
}

message categories {
    repeated category cat = 1;
}

当我运行 protoc --gogofaster_out= 时。 *.proto 我得到的输出是:

type category struct {
    categoryid int64
}

type categories struct {
    cat []*category
}

但我真正想要的是:

type Category struct {
    CategoryID int64
}

type Categories []*Category

.proto 文件中的代码需要什么才能获得所需的输出?


解决方案


Protobuf 基本上是一种序列化结构化数据的机制。这意味着在发送原始“消息”之前,必须对其进行序列化。当您为不同语言编译此原型时,它会生成适当的类(对于 c++/Java)、Golang 的结构。在您的情况下,“type Categories []*Category”不是一条消息,而是一个无法序列化的独立实体。 (我可以在这里纠正)。参考Protobuf语言指南https://developers.google.com/protocol-buffers/docs/proto3

如果这里的目的是拥有一个 Category 类型数组并序列化它们,建议将其封装在消息中。

本篇关于《如何使用 gogo/protobuf 获取自定义 go 类型》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>