gpt4 book ai didi

go - Protocol Buffer 使用枚举

转载 作者:IT王子 更新时间:2023-10-29 01:10:02 27 4
gpt4 key购买 nike

你好,我正在使用 protobuf,但我遇到了问题。

我有一些枚举函数,但其​​中我有相同的别名,当我尝试为某种语言“go”编译文件时,编译器返回错误。

我复制了 protobuf 文档中的示例来定义枚举,但仍然无法正常工作。

enum EnumAllowingAlias {
option allow_alias = true;
UNKNOWN = 0;
STARTED = 1;
RUNNING = 1;
}
enum EnumNotAllowingAlias {
UNKNOWN = 0;
STARTED = 1;
// RUNNING = 1; // Uncommenting this line will cause a compile error inside Google and a warning message outside.
}

这是谷歌文档说如果你需要在一些不同的枚举中使用相同的别名你需要添加选项“option allow_alias = true;”在枚举中,但在尝试编译 .proto 文件后,编译器响应。

example.proto:13:5: "UNKNOWN" is already defined in "namespace".
example.proto:13:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.
Therefore, "UNKNOWN" must be unique within "kluso", not just within "EnumNotAllowingAlias".

example.proto:14:5: "STARTED" is already defined in "namespace".
example.proto:14:5: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.
Therefore, "STARTED" must be unique within "kluso", not just within "EnumNotAllowingAlias".

我不知道发生了什么。有人知道是什么问题吗?

最佳答案

allow_alias 允许您为同一值使用两个不同的名称

但是,它仍然不允许允许您使用相同的名称两次!

在您从文档中获取的示例中,他们只是试图演示如何通过将 allow_alias 设置为 true 在同一枚举类型中使用 STARTED = 1 和 RUNNING = 1。他们给出的两个枚举示例并不意味着在同一个包中使用。

但是如果您已经在 EnumAllowingAlias 中运行了 RUNNING,那么如果它们在同一个包中,您就不能在 EnumNotAllowingAlias 中再次使用 RUNNING。

关于go - Protocol Buffer 使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36182638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com