如何解决gRPC Proto文件中枚举值输出格式与末尾空格问题?
解决方案
方法一:修改Protobuf定义(推荐)
把Technology枚举从ServiceTechnology消息中移出,让Temporary直接引用枚举类型,序列化输出会直接显示枚举值:
// 将枚举移至消息外部 enum Technology { GPU = 0; CPU = 1; TK_CPU = 2; TK_GPU = 3; } message ServiceTechnology { Technology technology = 1; } message Temporary { Technology technology = 1; // 直接使用枚举类型,而非嵌套消息 }
代码中设置值时简化为:
Technology: Technology_TK_GPU,
此时输出格式就是technology: TK_GPU,无嵌套结构和末尾空格。
方法二:手动提取枚举值输出(不修改Proto定义)
如果无法修改Protobuf文件,就在代码中手动提取嵌套的枚举值并格式化输出,避免直接打印整个消息结构体:
// 假设已初始化temp变量 fmt.Printf("technology: %s\n", temp.Technology.Technology.String())
这种方式会直接输出枚举值的字符串形式,完全符合你想要的格式。
内容的提问来源于stack exchange,提问作者baris
相关产品推荐
相关产品推荐

