reflector

package
v0.0.0-...-418145e Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2024 License: Apache-2.0 Imports: 5 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

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

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

FindEmbeddedFieldTag find embedded field tag

func FindFieldByTag

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

FindFieldByTag find field by tag

func GetEmbeddedField

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

GetEmbeddedField get embedded interface field

func GetEmbeddedFieldByType

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

GetEmbeddedFieldByType get embedded interface field by type

func GetEmbeddedFieldType

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

GetEmbeddedFieldType check if has embedded fieled

func GetEmbeddedFields

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

GetEmbeddedFields get embedded interface fields

func GetEmbeddedFieldsByType

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

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

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

func GetFuncName

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

GetFuncName get func name

func GetKind

func GetKind(kind reflect.Kind) reflect.Kind

GetKind get kind

func GetKindByType

func GetKindByType(typ reflect.Type) reflect.Kind

GetKindByType get kind by type

func GetKindByValue

func GetKindByValue(val reflect.Value) reflect.Kind

GetKindByValue get kind by value

func GetLowerCamelFullName

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

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

func GetLowerCamelFullNameByType

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

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

func GetLowerCamelName

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

GetLowerCamelName get lower case object name

func GetMethodsByAnnotation

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

GetMethodsByAnnotation call method

func GetName

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

GetName get object name

func GetObjectType

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

GetObjectType get the function output data type

func GetPkgAndName

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

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

func GetPkgPath

func GetPkgPath(object interface{}) string

GetPkgPath get the package patch

func GetShortPkgAndName

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

func GetType

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

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

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

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

IndirectValue get indirect value

func IsValidObjectType

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

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

ParseObjectName e.g. ExampleObject => example

func ParseObjectPkgName

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.

Jump to

Keyboard shortcuts

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