 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
- func BaseTypeOf(i any) reflect.Type
- func BaseValue(v reflect.Value) reflect.Value
- func BaseValueOf(i any) reflect.Value
- func Cast[T any](v any) (T, bool)
- func Clone(value reflect.Value) reflect.Value
- func DerefType(T reflect.Type) (_ reflect.Type, depth int)
- func Equal(x, y any) bool
- func FullyQualifiedName(v any) string
- func IsEmpty(val reflect.Value) bool
- func IsMutableType(typ reflect.Type) bool
- func IsNil(val reflect.Value) bool
- func IsZero(val reflect.Value) bool
- func Link(src, ptr any) (err error)
- func LookupField[FieldID LookupFieldID](rStruct reflect.Value, i FieldID) (reflect.StructField, reflect.Value, bool)
- func OverStructFields(rStruct reflect.Value) iter.Seq2[reflect.StructField, reflect.Value]
- func PointerOf(value reflect.Value) reflect.Value
- func RegisterEqual[T any](fn func(x, y T) bool) struct{}
- func SetValue(variable, value reflect.Value)
- func SymbolicName(v any) string
- func ToSettable(rv reflect.Value) (_ reflect.Value, ok bool)
- func ToValue(v any) reflect.Value
- func TypeOf[T any](i ...T) reflect.Type
- type LookupFieldID
- type TagHandler
Examples ¶
Constants ¶
      View Source
      
  
    const ErrInvalid errorkit.Error = "ErrInvalid"
    
      View Source
      
  
const ErrTypeMismatch errorkit.Error = "ErrTypeMismatch"
    Variables ¶
This section is empty.
Functions ¶
func BaseTypeOf ¶
func BaseValueOf ¶
func Equal ¶
Equal will compare two value deeply. It looks for Equal method on the value as well. You can define how a type's value should be compared by using RegisterEqual.
Example ¶
package main
import (
	"go.llib.dev/frameless/pkg/reflectkit"
)
func main() {
	reflectkit.Equal("a", "a") // true
	reflectkit.Equal("a", "b") // false
}
func FullyQualifiedName ¶
Example ¶
package main
import (
	"fmt"
	"go.llib.dev/frameless/pkg/reflectkit"
)
func main() {
	fmt.Println(reflectkit.FullyQualifiedName(Example{}))
}
type Example struct {
	Name string
}
func IsMutableType ¶ added in v0.280.0
func Link ¶
Link will make destination interface be linked with the src value.
Example ¶
package main
import (
	"go.llib.dev/frameless/pkg/reflectkit"
)
func main() {
	var src = Example{Name: "Panda"}
	var dest Example
	if err := reflectkit.Link(src, &dest); err != nil {
		// handle err
	}
}
type Example struct {
	Name string
}
func LookupField ¶ added in v0.278.0
func LookupField[FieldID LookupFieldID](rStruct reflect.Value, i FieldID) (reflect.StructField, reflect.Value, bool)
func OverStructFields ¶ added in v0.280.0
func RegisterEqual ¶
func SymbolicName ¶
Example ¶
package main
import (
	"fmt"
	"go.llib.dev/frameless/pkg/reflectkit"
)
func main() {
	fmt.Println(reflectkit.SymbolicName(Example{}))
}
type Example struct {
	Name string
}
func ToSettable ¶ added in v0.278.0
Example ¶
package main
import (
	"reflect"
	"go.llib.dev/frameless/pkg/reflectkit"
)
func main() {
	type T struct{ v int }
	var v T
	_ = v.v
	ptr := reflect.ValueOf(&v)
	rStruct := ptr.Elem()
	got, ok := reflectkit.ToSettable(rStruct.FieldByName("v"))
	_, _ = got, ok
}
Types ¶
type LookupFieldID ¶ added in v0.280.0
type LookupFieldID interface {
	reflect.StructField | int | string
}
    type TagHandler ¶ added in v0.280.0
type TagHandler[T any] struct { Name string Parse func(sf reflect.StructField, tagValue string) (T, error) Use func(sf reflect.StructField, field reflect.Value, v T) error // ForceCache will force the TagHandler to cache the parse results, regardless if the value is mutable or not. ForceCache bool // HandleUntagged will force the Handle functions to call Parse and Use even on fields where tag is empty. HandleUntagged bool // contains filtered or unexported fields }
func (*TagHandler[T]) HandleStruct ¶ added in v0.280.0
func (h *TagHandler[T]) HandleStruct(rStruct reflect.Value) error
func (*TagHandler[T]) HandleStructField ¶ added in v0.280.0
func (h *TagHandler[T]) HandleStructField(field reflect.StructField, value reflect.Value) error
func (*TagHandler[T]) LookupTag ¶ added in v0.280.0
func (h *TagHandler[T]) LookupTag(field reflect.StructField) (T, bool, error)
 Click to show internal directories. 
   Click to hide internal directories.