登录
首页 >  Golang >  Go问答

proto 文件,用 python 和 go 生成代码

来源:stackoverflow

时间:2024-03-16 16:57:27 366浏览 收藏

**生成 proto 代码:不同语言间的差异** 在使用同一个 proto 文件为 Python 和 Go 生成代码时,生成的变量命名惯例会因语言而异。Python 采用蛇形命名法,而 Go 采用驼峰命名法。这可能会导致变量名称在不同语言中出现差异。虽然目前无法将 Python 代码转换为驼峰命名法,但仍可以通过使用 linter 标志来强制 Python 代码遵守 CamelCase 惯例。此外,使用 protoc 和 --python_out 选项无法生成 Python 代码,因为该选项已弃用。

问题内容

我正在尝试使用相同的 proto 文件生成 python 和 go 代码。

我的原型文件如下所示:

message city {
  string name = 1;
  int32 street_no = 2;
}

当我使用以下命令在 python 中生成代码时:

python3 -m grpc_tools.protoc  -i proto/ --python_out=openconfig/ --grpc_python_out=openconfig/ proto/city.proto

然后变量名称保留在snake_case中,但是当使用下面的go代码生成proto文件时:

${protoc} --gogofaster_out=proto --proto_path proto proto/city.proto

那么生成的变量采用驼峰命名法。 因此,street_no 更改为 streetno

有没有办法将python代码也转换为camelcase而不是snake_case? 如何使用同一个 proto 文件在不同语言中工作?

我尝试使用 protoc 以及以下内容:

${PROTOC} --python_out=proto --proto_path proto/city.proto

仍然,它在snake_case中生成python代码。

谢谢

  • m-

正确答案


Protobuf 是以给定语言的标准格式生成的(Go 中又称为 CamelCase,Python 中称为蛇形命名法。如果它以不同的方式生成,您将拥有用于在 Python 中使用 CamelCase 的 linter 标志。变量需要什么原因吗?在不同的语言中具有相同的名称?

本篇关于《proto 文件,用 python 和 go 生成代码》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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