Skip to content

Instantly share code, notes, and snippets.

View Olex1313's full-sized avatar
:shipit:
$HOME

Alexey Olex1313

:shipit:
$HOME
  • HSE MIEM
  • Moscow, Russia
View GitHub Profile
@Olex1313
Olex1313 / clear_proto.go
Created October 9, 2023 06:23
Example cleanup function for protobuf message
func clearProtoFields(msg proto.Message, sensitiveFieldAnnotation *protoimpl.ExtensionInfo) proto.Message {
clonedMsg := proto.Clone(msg)
reflectMsg := proto.MessageReflect(clonedMsg)
var messagesToCheck []protoreflect.Message
messagesToCheck = append(messagesToCheck, reflectMsg)
for len(messagesToCheck) != 0 {
lastIdx := len(messagesToCheck) - 1
visitMessage := messagesToCheck[lastIdx]
messagesToCheck = messagesToCheck[:lastIdx]