fastReflect

package
v0.15.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2024 License: MIT Imports: 5 Imported by: 5

Documentation

Index

Constants

View Source
const (
	ListTypeString              = "collections.List["
	DictionaryTypeString        = "collections.Dictionary["
	PageListTypeString          = "collections.PageList["
	CollectionsTypeString       = "github.com/farseer-go/collections"
	CollectionsPrefixTypeString = "collections."
	DatetimeString              = "dateTime.DateTime"
	TimeString                  = "time.Time"
	DecimalString               = "decimal.Decimal"
	DomainSetString             = "data.DomainSet["
	TableSetString              = "data.TableSet["
	IndexSetString              = "elasticSearch.IndexSet["
)

Variables

This section is empty.

Functions

func SetValue

func SetValue(ptr unsafe.Pointer, val any, valType *TypeMeta)

Types

type EmptyInterface

type EmptyInterface struct {
	Typ   *rtype
	Value unsafe.Pointer
}

EmptyInterface any底层结构,参考reflect.Value的emptyInterface设计

type FieldType

type FieldType int
const (
	List        FieldType = iota // 集合类型
	PageList                     // 集合类型
	CustomList                   // 自定义List类型
	Slice                        // 结构体类型
	Array                        // 结构体类型
	Map                          // map类型
	Dic                          // 字典类型
	GoBasicType                  // 基础类型
	Struct                       // 结构体类型
	Chan                         // 结构体类型
	Interface                    // 结构体类型
	Func                         // 结构体类型
	Invalid                      // 结构体类型
	Unknown                      // 结构体类型
)

type PointerMeta

type PointerMeta struct {
	*TypeMeta
	PointerValue unsafe.Pointer // 值指向的内存地址
	HashCode     uint32
}

PointerMeta 元数据

func PointerOf

func PointerOf(val any) PointerMeta

PointerOf 传入任意变量类型的值,得出该值对应的类型

func PointerOfValue

func PointerOfValue(val reflect.Value) PointerMeta

PointerOfValue 传入任意变量类型的值,得出该值对应的类型 //go:linkname nanotime1 reflect.nanotime1

func Test

func Test(val any) PointerMeta

type SliceHeader

type SliceHeader struct {
	Data uintptr
	Len  int
	Cap  int
}

SliceHeader 切片的底层结构

type StringHeader

type StringHeader struct {
	Data uintptr
	Len  int
}

StringHeader is the runtime representation of a string. It cannot be used safely or portably and its representation may change in a later release. Moreover, the Data field is not sufficient to guarantee the data it references will not be garbage collected, so programs must keep a separate, correctly typed pointer to the underlying data.

In new code, use unsafe.String or unsafe.StringData instead.

type TypeMeta

type TypeMeta struct {
	//Name              string              // 字段名称
	ReflectType       reflect.Type          // 字段类型
	ReflectTypeString string                // 类型
	ReflectTypeBytes  []byte                // 类型
	TypeIdentity      string                // 类型标识
	Type              FieldType             // 集合类型
	IsAddr            bool                  // 原类型是否带指针
	StructField       []reflect.StructField // 结构体的字段
	ExportedField     []int                 // 结构体的字段,允许导出的字段索引
	MapType           reflect.Type          // Dic的底层map类型

	SliceType            reflect.Type  // ItemType转成切片类型
	ZeroValue            any           // 零值时的值
	ZeroReflectValue     reflect.Value // 零值时的值
	ZeroReflectValueElem reflect.Value // 零值时的值
	Kind                 reflect.Kind  // 类型
	IsNumber             bool          // 是否为数字
	IsEmum               bool          // 是否枚举
	IsString             bool          // 是否为字符串
	IsBool               bool          // 是否bool
	IsTime               bool          // 是否time.Time
	IsDateTime           bool          // 是否dateTime.DateTime
	IsSliceOrArray       bool          // 是否切片或数组类型
	IsStruct             bool          // 是否结构体
	IsMap                bool          // 是否字典
	HashCode             uint32        // 每个类型的HashCode都是唯一的
	Size                 uintptr       // 内存占用大小
	// contains filtered or unexported fields
}

TypeMeta 类型元数据

func (*TypeMeta) GetItemMeta

func (receiver *TypeMeta) GetItemMeta() *TypeMeta

Jump to

Keyboard shortcuts

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