// Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style. // license that can be found in the LICENSE file. package proto import "google.golang.org/protobuf/reflect/protoreflect" // Reset clears every field in the message. func Reset(m Message) { // TODO: Document memory aliasing guarantees. // TODO: Add fast-path for reset? resetMessage(m.ProtoReflect()) } func resetMessage(m protoreflect.Message) { m.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { m.Clear(fd) return true }) if m.GetUnknown() != nil { m.SetUnknown(nil) } }