Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StructToMap ¶
func StructToMap(filter FieldFilter, src interface{}, dst map[string]interface{}) error
StructToMap copies `src` struct to the `dst` map. Behavior is similar to `StructToStruct`.
func StructToStruct ¶
func StructToStruct(filter FieldFilter, src, dst interface{}) error
StructToStruct copies `src` struct to `dst` struct using the given FieldFilter. Only the fields where FieldFilter returns true will be copied to `dst`. `src` and `dst` must be coherent in terms of the field names, but it is not required for them to be of the same type. Unexported fields are copied only if the corresponding struct filter is empty and `dst` is assignable to `src`.
Types ¶
type FieldFilter ¶
type FieldFilter interface { // Filter should return a corresponding FieldFilter for the given fieldName and a boolean result. If result is true // then the field is copied, skipped otherwise. Filter(fieldName string) (FieldFilter, bool) // Returns true if the FieldFilter is empty. In this case all fields are copied. IsEmpty() bool }
FieldFilter is an interface used by the copying function to filter fields that are needed to be copied.
type Mask ¶
type Mask map[string]FieldFilter
Mask is a tree-based implementation of a FieldFilter.
func MaskFromPaths ¶
MaskFromPaths creates a new Mask from the given paths.
func MaskFromProtoFieldMask ¶
MaskFromProtoFieldMask creates a Mask from the given FieldMask.
func MaskFromString ¶
MaskFromString creates a `Mask` from a string `s`. `s` is supposed to be a valid string representation of a FieldFilter like "a,b,c{d,e{f,g}},d". This is the same string format as in FieldFilter.String(). This function should only be used in tests as it does not validate the given string and is only convenient to easily create DefaultMasks.
type MaskInverse ¶
type MaskInverse Mask
MaskInverse is an inversed version of a Mask (will copy all the fields except those mentioned in the mask).
func (MaskInverse) Filter ¶
func (m MaskInverse) Filter(fieldName string) (FieldFilter, bool)
Filter returns true for those fieldNames that do NOT exist in the underlying map. Field names that start with "XXX_" are ignored as unexported.
func (MaskInverse) IsEmpty ¶
func (m MaskInverse) IsEmpty() bool
func (MaskInverse) String ¶
func (m MaskInverse) String() string