登录
首页 >  Golang >  Go问答

如何修改 protobuf 枚举值

来源:stackoverflow

时间:2024-03-19 10:00:28 290浏览 收藏

在 Protocol Buffers 中使用自定义枚举值时,无法直接通过标签修改枚举值。这是因为更改枚举结构将导致整个结构失效。因此,需要显式指定标识符。例如,要将 “north_america” 枚举值修改为 “North America”,需要将 “north_america” = 0; 替换为 “North America” = 0;。这样,生成的 Go 代码将包含 “Region_name” 和 “Region_value” 映射,其中枚举值使用自定义标签表示。

问题内容

我使用protoc将proto文件生成为.go文件。 在protocol buffers中,我想使用具有自定义值的枚举值。

enum region {
north_america = 0; // i want to set it to be "north america" use space replace the _
southr_america =1;
}

生成的golang为

const (
    region_north_america  region = 0
    region_southr_america region = 1
)

var region_name = map[int32]string{
    0: "north_america",
    1: "southr_america",
}

var region_value = map[string]int32{
    "north_america":  0,
    "southr_america": 1,
}

我怎样才能给枚举一些标签,以便生成

var Region_name = map[int32]string{
    0: "North America",
    1: "Southr America",
}

var Region_value = map[string]int32{
    "North America":  0,
    "Southr America": 1,
}

解决方案


这是不可能的;如果添加或删除一个元素,整个结构就会被破坏。因此,您需要显式指定标识符 ... = 0;必填

以上就是《如何修改 protobuf 枚举值》的详细内容,更多关于的资料请关注golang学习网公众号!

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