Documentation ¶
Overview ¶
Package apiReflect - Snaffooed from https://github.com/fatih/structs
Package apiReflect - Snaffooed from https://github.com/fatih/structs Package apiReflect contains various utilities functions to work with structs.
Package apiReflect - Snaffooed from https://github.com/fatih/structs
Index ¶
- Variables
- func AsArray(ref interface{}) []interface{}
- func DoPkgTypesMatch(a interface{}, b interface{}) error
- func DoTypesMatch(a interface{}, b interface{}) error
- func FillMap(s interface{}, out map[string]interface{})
- func FindInStruct(ref interface{}, name string) interface{}
- func FindRequestData(ref interface{}) string
- func GetArea(trim string, v interface{}) string
- func GetCallerPackage(skip int) string
- func GetCmdName2(ref interface{}) string
- func GetFingerprint(ref interface{}) string
- func GetName(trim string, v interface{}) string
- func GetNameOld(ref interface{}) (string, string)
- func GetPackageName(ref interface{}) string
- func GetPkgType(v interface{}) string
- func GetRequestString(ref interface{}) string
- func GetStructName(v interface{}) (string, string)
- func GetStructName2(ref interface{}) string
- func GetType(v interface{}) string
- func HasZero(s interface{}) bool
- func HeaderAsArray(i interface{}) []interface{}
- func HelpOptions(ref interface{}) string
- func IsStruct(s interface{}) bool
- func IsZero(s interface{}) bool
- func Map(s interface{}) map[string]interface{}
- func Name(s interface{}) string
- func Names(s interface{}) []string
- func PackageName(trim string, v interface{}) string
- func PrintAsJson(ref interface{}) (string, error)
- func PrintHeader(i interface{}) string
- func PrintValue(i interface{}) string
- func Query(i interface{}) string
- func ReflectAsJson(ref interface{}) string
- func Values(s interface{}) []interface{}
- func VerifyOptionsRequired(ref interface{}) error
- type DataStructure
- type DataStructureMap
- type Field
- func (f *Field) Field(name string) *Field
- func (f *Field) FieldOk(name string) (*Field, bool)
- func (f *Field) Fields() []*Field
- func (f *Field) IsEmbedded() bool
- func (f *Field) IsExported() bool
- func (f *Field) IsZero() bool
- func (f *Field) Kind() reflect.Kind
- func (f *Field) Name() string
- func (f *Field) Set(val interface{}) error
- func (f *Field) Tag(key string) string
- func (f *Field) Value() interface{}
- func (f *Field) Zero() error
- type Required
- type Struct
- func (s *Struct) Field(name string) *Field
- func (s *Struct) FieldOk(name string) (*Field, bool)
- func (s *Struct) Fields() []*Field
- func (s *Struct) FillMap(out map[string]interface{})
- func (s *Struct) HasZero() bool
- func (s *Struct) IsZero() bool
- func (s *Struct) Map() map[string]interface{}
- func (s *Struct) Name() string
- func (s *Struct) Names() []string
- func (s *Struct) Values() []interface{}
- type StructKey
- type StructKeys
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultTagName is the default tag name for struct fields which provides // a more granular to tweak certain structs. Lookup the necessary functions // for more info. DefaultTagName = "structs" // struct's field default tag name )
Functions ¶
func DoPkgTypesMatch ¶
func DoPkgTypesMatch(a interface{}, b interface{}) error
func DoTypesMatch ¶
func DoTypesMatch(a interface{}, b interface{}) error
func FillMap ¶
func FillMap(s interface{}, out map[string]interface{})
FillMap is the same as Map. Instead of returning the output, it fills the given map.
func FindInStruct ¶
func FindInStruct(ref interface{}, name string) interface{}
FindInStruct Search a given structure for the State object and return its pointer.
func FindRequestData ¶
func FindRequestData(ref interface{}) string
func GetCallerPackage ¶
func GetCmdName2 ¶
func GetCmdName2(ref interface{}) string
func GetFingerprint ¶
func GetFingerprint(ref interface{}) string
func GetNameOld ¶
func GetPackageName ¶
func GetPackageName(ref interface{}) string
func GetPkgType ¶
func GetPkgType(v interface{}) string
func GetRequestString ¶
func GetRequestString(ref interface{}) string
func GetStructName ¶
func GetStructName2 ¶
func GetStructName2(ref interface{}) string
func HasZero ¶
func HasZero(s interface{}) bool
HasZero returns true if any field is equal to a zero value. For more info refer to Struct types HasZero() method. It panics if s's kind is not struct.
func HeaderAsArray ¶
func HeaderAsArray(i interface{}) []interface{}
func HelpOptions ¶
func HelpOptions(ref interface{}) string
func IsStruct ¶
func IsStruct(s interface{}) bool
IsStruct returns true if the given variable is a struct or a pointer to struct.
func IsZero ¶
func IsZero(s interface{}) bool
IsZero returns true if all fields is equal to a zero value. For more info refer to Struct types IsZero() method. It panics if s's kind is not struct.
func Map ¶
func Map(s interface{}) map[string]interface{}
Map converts the given struct to a map[string]interface{}. For more info refer to Struct types Map() method. It panics if s's kind is not struct.
func Name ¶
func Name(s interface{}) string
Name returns the structs's type name within its package. It returns an empty string for unnamed types. It panics if s's kind is not struct.
func Names ¶
func Names(s interface{}) []string
Names returns a slice of field names. For more info refer to Struct types Names() method. It panics if s's kind is not struct.
func PackageName ¶
func PrintAsJson ¶
func PrintHeader ¶
func PrintHeader(i interface{}) string
func PrintValue ¶
func PrintValue(i interface{}) string
func ReflectAsJson ¶
func ReflectAsJson(ref interface{}) string
func Values ¶
func Values(s interface{}) []interface{}
Values converts the given struct to a []interface{}. For more info refer to Struct types Values() method. It panics if s's kind is not struct.
func VerifyOptionsRequired ¶
func VerifyOptionsRequired(ref interface{}) error
VerifyOptionsRequired Verify fields within the structure that are required.
Types ¶
type DataStructure ¶
type DataStructureMap ¶
type DataStructureMap map[string]DataStructure
func GetTagPointType ¶
func GetTagPointType(ref interface{}) DataStructureMap
type Field ¶
type Field struct {
// contains filtered or unexported fields
}
Field represents a single struct field that encapsulates high level functions around the field.
func Fields ¶
func Fields(s interface{}) []*Field
Fields returns a slice of *Field. For more info refer to Struct types Fields() method. It panics if s's kind is not struct.
func (*Field) Field ¶
Field returns the field from a nested struct. It panics if the nested struct is not exported or if the field was not found.
func (*Field) FieldOk ¶
FieldOk returns the field from a nested struct. The boolean returns whether the field was found (true) or not (false).
func (*Field) Fields ¶
Fields returns a slice of Fields. This is particular handy to get the fields of a nested struct . A struct tag with the content of "-" ignores the checking of that particular field. Example:
// Field is ignored by this package. Field *http.Request `structs:"-"`
It panics if field is not exported or if field's kind is not struct
func (*Field) IsEmbedded ¶
IsEmbedded returns true if the given field is an anonymous field (embedded)
func (*Field) IsExported ¶
IsExported returns true if the given field is exported.
func (*Field) IsZero ¶
IsZero returns true if the given field is not initialized (has a zero value). It panics if the field is not exported.
func (*Field) Set ¶
Set sets the field to given value v. It returns an error if the field is not settable (not addressable or not exported) or if the given value's type doesn't match the fields type.
func (*Field) Tag ¶
Tag returns the value associated with key in the tag string. If there is no such key in the tag, Tag returns the empty string.
type Required ¶
type Required []string
func GetOptionsRequired ¶
func GetOptionsRequired(ref interface{}) Required
func (*Required) IsNotRequired ¶
func (*Required) IsRequired ¶
type Struct ¶
type Struct struct { TagName string // contains filtered or unexported fields }
Struct encapsulates a struct type to provide several high level functions around the struct.
func New ¶
func New(s interface{}) *Struct
New returns a new *Struct with the struct s. It panics if the s's kind is not struct.
func (*Struct) Field ¶
Field returns a new Field struct that provides several high level functions around a single struct field entity. It panics if the field is not found.
func (*Struct) FieldOk ¶
FieldOk returns a new Field struct that provides several high level functions around a single struct field entity. The boolean returns true if the field was found.
func (*Struct) Fields ¶
Fields returns a slice of Fields. A struct tag with the content of "-" ignores the checking of that particular field. Example:
// Field is ignored by this package. Field bool `structs:"-"`
It panics if s's kind is not struct.
func (*Struct) FillMap ¶
FillMap is the same as Map. Instead of returning the output, it fills the given map.
func (*Struct) HasZero ¶
HasZero returns true if a field in a struct is not initialized (zero value). A struct tag with the content of "-" ignores the checking of that particular field. Example:
// Field is ignored by this package. Field bool `structs:"-"`
A value with the option of "omitnested" stops iterating further if the type is a struct. Example:
// Field is not processed further by this package. Field time.Time `structs:"myName,omitnested"` Field *http.Request `structs:",omitnested"`
Note that only exported fields of a struct can be accessed, non exported fields will be neglected. It panics if s's kind is not struct.
func (*Struct) IsZero ¶
IsZero returns true if all fields in a struct is a zero value (not initialized) A struct tag with the content of "-" ignores the checking of that particular field. Example:
// Field is ignored by this package. Field bool `structs:"-"`
A value with the option of "omitnested" stops iterating further if the type is a struct. Example:
// Field is not processed further by this package. Field time.Time `structs:"myName,omitnested"` Field *http.Request `structs:",omitnested"`
Note that only exported fields of a struct can be accessed, non exported fields will be neglected. It panics if s's kind is not struct.
func (*Struct) Map ¶
Map converts the given struct to a map[string]interface{}, where the keys of the map are the field names and the values of the map the associated values of the fields. The default key string is the struct field name but can be changed in the struct field's tag value. The "structs" key in the struct's field tag value is the key name. Example:
// Field appears in map as key "myName". Name string `structs:"myName"`
A tag value with the content of "-" ignores that particular field. Example:
// Field is ignored by this package. Field bool `structs:"-"`
A tag value with the content of "string" uses the stringer to get the value. Example:
// The value will be output of Animal's String() func. // Map will panic if Animal does not implement String(). Field *Animal `structs:"field,string"`
A tag value with the option of "flatten" used in a struct field is to flatten its fields in the output map. Example:
// The FieldStruct's fields will be flattened into the output map. FieldStruct time.Time `structs:",flatten"`
A tag value with the option of "omitnested" stops iterating further if the type is a struct. Example:
// Field is not processed further by this package. Field time.Time `structs:"myName,omitnested"` Field *http.Request `structs:",omitnested"`
A tag value with the option of "omitempty" ignores that particular field if the field value is empty. Example:
// Field appears in map as key "myName", but the field is // skipped if empty. Field string `structs:"myName,omitempty"` // Field appears in map as key "Field" (the default), but // the field is skipped if empty. Field string `structs:",omitempty"`
Note that only exported fields of a struct can be accessed, non exported fields will be neglected.
func (*Struct) Name ¶
Name returns the structs's type name within its package. For more info refer to Name() function.
func (*Struct) Names ¶
Names returns a slice of field names. A struct tag with the content of "-" ignores the checking of that particular field. Example:
// Field is ignored by this package. Field bool `structs:"-"`
It panics if s's kind is not struct.
func (*Struct) Values ¶
func (s *Struct) Values() []interface{}
Values converts the given s struct's field values to a []interface{}. A struct tag with the content of "-" ignores the that particular field. Example:
// Field is ignored by this package. Field int `structs:"-"`
A value with the option of "omitnested" stops iterating further if the type is a struct. Example:
// Fields is not processed further by this package. Field time.Time `structs:",omitnested"` Field *http.Request `structs:",omitnested"`
A tag value with the option of "omitempty" ignores that particular field and is not added to the values if the field value is empty. Example:
// Field is skipped if empty Field string `structs:",omitempty"`
Note that only exported fields of a struct can be accessed, non exported fields will be neglected.
type StructKeys ¶
func GetStructKeys ¶
func GetStructKeys(ref interface{}, keys ...string) StructKeys