我有一个golang结构,其中包含对其他结构的引用。有没有一种自动化的方法来生成。结构中的原始文件?
例如:
type A struct {
a int
b B
}
type B struct {
c []C
}
type C struct {
x int
}
应生成:
消息A、B、C等。首选proto3。
https://github.com/kubernetes/kubernetes/tree/master/cmd/libs/go2idl似乎有相关的东西,但没有记录。有选择吗?
如果有人在GO Get Error中找到这里。您只需要GO111MODULE=off
GO111MODULE=off go get -v gopkg.in/src-d/proteus.v1/...
GO111MODULE=off go get -v -u github.com/gogo/protobuf/...
如果有人只需要生成纯protobuf消息,而不需要任何gogo、mogo、blogo语法,那么您可以使用https://github.com/anjmao/go2proto这是我最近写的。它非常简单,只需从包含结构的给定go源包生成原始消息。它还支持go模块。
我在找包,从Go源代码生成. proto文件:Proteus(https://github.com/src-d/proteus)
Proteus /pro是一个工具,用于从您的Go结构、类型和函数生成协议缓冲区版本3兼容的. proto文件。
这个库背后的动机是使用Go作为模型的真实来源,而不是反过来,然后从一个实例生成Go代码。proto文件,它不会生成惯用代码。
生成protobuf消息
//proteus:generate
type User struct {
Model
Username string
}
type Model struct {
ID int
CreatedAt time.Time
}
本例将生成以下protobuf消息。
message User {
int32 id = 1;
google.protobuf.Timestamp created_at = 2;
string username = 3;
}
安装
go get -v gopkg.in/src-d/proteus.v1/...
要求
整个过程有两个要求。
protoc binary installed on your path
go get -u github.com/gogo/protobuf/...
用法
您可以为您的Go类型、RPC客户端和服务器接口以及您的软件包的RPC服务器实现生成原始文件、列表/散集和其余原型东西。也就是说,整个过程。
proteus -f /path/to/protos/folder \
-p my/go/package \
-p my/other/go/package
您只能使用proteus提供的命令行工具生成proto文件。
proteus proto -f /path/to/output/folder \
-p my/go/package \
-p my/other/go/package
--verbose
您也只能为包生成gRPC服务器实现。
proteus rpc -p my/go/package \
-p my/other/go/package
注意:当然,如果默认设置不适合您的需要,在proteus通过插件扩展之前,您可以使用提供的组件对自己的生成器命令进行黑客攻击。查看该软件包的godoc文档。
根据@Ryan Emerson的建议更新了我的代码,但我仍然没有看到任何自动生成的Impl文件和proto文件 著者班 书班 具有覆盖方法的上下文初始化器类 然后实例化上下文初始化器的ClassA 梅文 我仍然没有看到任何自动生成的原始文件。有人能告诉我我做错了什么吗?
当我尝试使用Makefile命令生成proto文件时-,我得到这个错误- 当我运行which go时,我有: 哪个协议返回此- 下面是我的<代码>。zshrc看起来像: 我也安装了插件 请否则我应该添加我的以避免此错误吗?
提前致谢
问题内容: 我有以下几种类型: 我可以使用use ,但是我 不能 使用 似乎可以嵌入语法,但是使用它无效吗? 问题答案: 嵌入式类型是(未命名的)字段,由不合格的类型名称引用。 规格:结构类型: 使用类型但没有显式字段名称声明的字段是 匿名字段 ,也称为 嵌入式 字段或该类型在结构中的嵌入。必须将嵌入式类型指定为类型名称或指向非接口类型名称的指针,并且本身不能为指针类型。 非限定类型名称充当字段名
问题内容: 我正在尝试在PMA中还原数据库,但只能访问frm和ibd文件,而不能访问我了解您需要的ib_log文件。 我知道我可能无法恢复数据库数据,但是是否可以从frm文件恢复表的结构? 问题答案: 我仅从和文件中还原了该表。 获取SQL查询以创建表 如果您已经知道表的架构,则可以跳过此步骤。 首先,安装MySQL Utilities。然后,您可以在命令提示符(cmd)中使用命令。 其次,使用以
c.h 得到这样的结果: 这似乎不正确, 我正在golang寻找类似的东西:mvar.VI32 谢谢 我的头很痛,不擅长C / C, 这是我的场景,调用一个SDK(带有.so库) c.h 我试着用Go语言调用函数ASFGetActiveFileInfo,如下所示: 得到这个错误: 尝试: 得到这个错误 这个问题有什么解决方案吗? 感谢@peterSO的回答,它工作,但仍然显示错误: 事实非常接近