reflector

package
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2020 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package reflector provides utilities for reflection

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidInput means that the input is invalid
	ErrInvalidInput = errors.New("input is invalid")

	// ErrInvalidMethod means that the method is invalid
	ErrInvalidMethod = errors.New("method is invalid")

	// ErrInvalidFunc means that the func is invalid
	ErrInvalidFunc = errors.New("func is invalid")

	// ErrFieldCanNotBeSet means that the field can not be set
	ErrFieldCanNotBeSet = errors.New("field can not be set")
)

Functions

func CallFunc added in v0.4.0

func CallFunc(object interface{}, args ...interface{}) (interface{}, error)

CallFunc call function

func CallMethodByName

func CallMethodByName(object interface{}, name string, args ...interface{}) (interface{}, error)

CallMethodByName call method

func DeepFields

func DeepFields(reflectType reflect.Type) []reflect.StructField

DeepFields iterate struct field

func FindEmbeddedFieldTag added in v0.8.0

func FindEmbeddedFieldTag(object interface{}, fieldName, tagName string) (t string, ok bool)

FindEmbeddedFieldTag find embedded field tag

func FindFieldByTag added in v1.3.0

func FindFieldByTag(obj interface{}, key, name string) (field reflect.StructField, ok bool)

FindFieldByTag find field by tag

func GetEmbeddedField added in v0.9.3

func GetEmbeddedField(object interface{}, nameOrType interface{}, dataTypes ...reflect.Kind) (field reflect.StructField)

GetEmbeddedField get embedded interface field

func GetEmbeddedFieldByType added in v0.9.3

func GetEmbeddedFieldByType(typ reflect.Type, nameOrType interface{}, kind ...reflect.Kind) (field reflect.StructField, ok bool)

GetEmbeddedFieldByType get embedded interface field by type

func GetEmbeddedFieldType added in v1.2.0

func GetEmbeddedFieldType(object interface{}, expected interface{}) (field reflect.StructField, ok bool)

GetEmbeddedFieldType check if has embedded fieled

func GetEmbeddedFields added in v0.11.0

func GetEmbeddedFields(object interface{}, kind ...reflect.Kind) (fields []reflect.StructField)

GetEmbeddedFields get embedded interface fields

func GetEmbeddedFieldsByType added in v0.11.0

func GetEmbeddedFieldsByType(typ reflect.Type, kind ...reflect.Kind) (fields []reflect.StructField)

GetEmbeddedFieldsByType get embedded interface fields by type

func GetFieldValue

func GetFieldValue(f interface{}, name string) reflect.Value

GetFieldValue get field value

func GetFullName added in v0.9.0

func GetFullName(object interface{}) (name string)

GetFullName get the object name with package name, e.g. pkg.Object

func GetFuncName added in v0.9.4

func GetFuncName(fn interface{}) (name string)

GetFuncName get func name

func GetKind

func GetKind(kind reflect.Kind) reflect.Kind

GetKind get kind

func GetKindByType added in v0.5.0

func GetKindByType(typ reflect.Type) reflect.Kind

GetKindByType get kind by type

func GetKindByValue added in v0.5.0

func GetKindByValue(val reflect.Value) reflect.Kind

GetKindByValue get kind by value

func GetLowerCamelFullName added in v0.9.3

func GetLowerCamelFullName(object interface{}) (name string)

GetLowerCamelFullName get the object name with package name, e.g. pkg.objectName

func GetLowerCamelFullNameByType added in v0.9.3

func GetLowerCamelFullNameByType(objType reflect.Type) (name string)

GetLowerCamelFullNameByType get the object name with package name by type, e.g. pkg.Object

func GetLowerCamelName added in v0.9.3

func GetLowerCamelName(object interface{}) (name string)

GetLowerCamelName get lower case object name

func GetName

func GetName(data interface{}) (name string)

GetName get object name

func GetObjectType added in v0.9.7

func GetObjectType(object interface{}) (typ reflect.Type, ok bool)

GetObjectType get the function output data type

func GetPkgAndName added in v0.9.0

func GetPkgAndName(object interface{}) (pkgName, name string)

GetPkgAndName get the package name and the object name with, e.g. pkg, Object

func GetPkgPath added in v0.3.0

func GetPkgPath(object interface{}) string

GetPkgPath get the package patch

func GetType added in v0.5.0

func GetType(data interface{}) (typ reflect.Type, err error)

GetType get object data type

func HasEmbeddedField

func HasEmbeddedField(object interface{}, name string) bool

HasEmbeddedField check if has embedded fieled

func HasEmbeddedFieldType added in v0.9.7

func HasEmbeddedFieldType(object interface{}, expected interface{}) (found bool)

HasEmbeddedFieldType check if has embedded fieled

func HasField

func HasField(object interface{}, name string) bool

HasField check if has specific field

func Implements added in v1.3.0

func Implements(object interface{}, interfaceType interface{}) (ok bool)

Implements

func Indirect

func Indirect(reflectValue reflect.Value) reflect.Value

Indirect get indirect value

func IndirectType

func IndirectType(reflectType reflect.Type) reflect.Type

IndirectType get indirect type

func IndirectValue added in v1.3.0

func IndirectValue(object interface{}) (reflectValue reflect.Value)

IndirectValue get indirect value

func IsValidObjectType added in v0.9.5

func IsValidObjectType(inst interface{}) bool

IsValidObjectType check if is valid object type

func NewReflectType

func NewReflectType(st interface{}) interface{}

NewReflectType create instance by tyep

func ParseObjectName added in v0.3.0

func ParseObjectName(obj interface{}, eliminator string) string

ParseObjectName e.g. ExampleObject => example

func ParseObjectPkgName added in v0.4.0

func ParseObjectPkgName(obj interface{}) string

ParseObjectPkgName e.g. ExampleObject => example

func SetFieldValue

func SetFieldValue(object interface{}, name string, value interface{}) error

SetFieldValue set field value

func Validate

func Validate(toValue interface{}) (*reflect.Value, error)

Validate validate value

func ValidateReflectType

func ValidateReflectType(obj interface{}, callback func(value *reflect.Value, reflectType reflect.Type, fieldSize int, isSlice bool) error) error

ValidateReflectType validate reflect type and iterate all fields

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL