reflect

package module
v0.0.0-...-8b45bad Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package reflect 基于 reflect 库实现一些方便的功能

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FromJsonvalueToAny

func FromJsonvalueToAny(target any, jv *jsonvalue.V, tag string) error

FromJsonvalueToAny 将 *jsonvalue.V 类型转换为 any 类型的值, 这是 ReadAnyToJsonvalue 的反操作

WARN: beta feature

func ReadAny

func ReadAny(v any, reader ValueReader)

ReadAny 读取任意类型的值

func ReadAnyToJsonvalue

func ReadAnyToJsonvalue(v any, tag string) (*jsonvalue.V, error)

ReadAnyToJsonvalue 读取一个基于 struct tag 的值到 *jsonvalue.V 类型

WARN: beta feature

func ReadArray

func ReadArray(v any, reader ValueReader)

ReadArray 读取数组类型的值。除了 reflect.Array 类型之外什么事情都不做

func ReadMap

func ReadMap(v any, reader ValueReader)

ReadMap 读取 map 类型的值。除了 reflect.Map 类型之外什么事情都不做

func ReadSlice

func ReadSlice(v any, reader ValueReader)

ReadSlice 读取切片类型的值。除了 reflect.Slice 类型之外其他什么类型都不做

func ReadStruct

func ReadStruct(v any, reader ValueReader)

ReadStruct 读取结构体类型的值。注意, 仅 reflect.Struct 类型有效, 其他类型什么都不做

Types

type FieldDesc

type FieldDesc struct {
	// TypeDesc 字段类型描述
	TypeDesc TypeDesc

	// StructFieldName struct 类型的字段名称
	StructFieldName string
	// StructTag 字段标签
	StructTag reflect.StructTag
	// AnonymousStructField 是否为 struct 类型的匿名字段
	AnonymousStructField bool

	// MapKey map 类型的键值
	MapKey any
	// MapValue map 类型的值
	MapValue any
}

FieldDesc 字段描述

type SimpleValueReadResultItem

type SimpleValueReadResultItem struct {
	Index int
	Desc  FieldDesc
	Read  struct {
		Nil           bool
		Bool          bool
		Int64         bool
		Uint64        bool
		Uintptr       bool
		Float32       bool
		Float64       bool
		Complex128    bool
		Array         bool
		Chan          bool
		Func          bool
		Interface     bool
		Map           bool
		Slice         bool
		String        bool
		Struct        bool
		UnsafePointer bool
	}
	Value struct {
		Bool          bool
		Int64         int64
		Uint64        uint64
		Uintptr       uintptr
		Float32       float32
		Float64       float64
		Complex128    complex128
		Array         any
		Chan          any
		Func          any
		Interface     any
		Map           any
		Slice         any
		String        string
		Struct        any
		UnsafePointer unsafe.Pointer
	}
}

type SimpleValueReader

type SimpleValueReader struct {
	Results []SimpleValueReadResultItem
}

SimpleValueReader 最简单化的字段值读取器, 按顺序简单地罗列获得的值

func NewSimpleValueReader

func NewSimpleValueReader() *SimpleValueReader

NewSimpleValueReader new(SimpleValueReader)

func (*SimpleValueReader) Clear

func (r *SimpleValueReader) Clear()

func (*SimpleValueReader) ReadArray

func (r *SimpleValueReader) ReadArray(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadBool

func (r *SimpleValueReader) ReadBool(i int, f FieldDesc, v bool)

func (*SimpleValueReader) ReadChan

func (r *SimpleValueReader) ReadChan(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadComplex128

func (r *SimpleValueReader) ReadComplex128(i int, f FieldDesc, v complex128)

func (*SimpleValueReader) ReadFloat32

func (r *SimpleValueReader) ReadFloat32(i int, f FieldDesc, v float32)

func (*SimpleValueReader) ReadFloat64

func (r *SimpleValueReader) ReadFloat64(i int, f FieldDesc, v float64)

func (*SimpleValueReader) ReadFunc

func (r *SimpleValueReader) ReadFunc(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadInt64

func (r *SimpleValueReader) ReadInt64(i int, f FieldDesc, v int64)

func (*SimpleValueReader) ReadInterface

func (r *SimpleValueReader) ReadInterface(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadMap

func (r *SimpleValueReader) ReadMap(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadNil

func (r *SimpleValueReader) ReadNil(i int, f FieldDesc)

func (*SimpleValueReader) ReadSlice

func (r *SimpleValueReader) ReadSlice(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadString

func (r *SimpleValueReader) ReadString(i int, f FieldDesc, v string)

func (*SimpleValueReader) ReadStruct

func (r *SimpleValueReader) ReadStruct(i int, f FieldDesc, v any)

func (*SimpleValueReader) ReadUint64

func (r *SimpleValueReader) ReadUint64(i int, f FieldDesc, v uint64)

func (*SimpleValueReader) ReadUintptr

func (r *SimpleValueReader) ReadUintptr(i int, f FieldDesc, v uintptr)

func (*SimpleValueReader) ReadUnsafePointer

func (r *SimpleValueReader) ReadUnsafePointer(i int, f FieldDesc, v unsafe.Pointer)

type TypeDesc

type TypeDesc struct {
	// 底层类型名称, 不包含 *
	TypeName string `json:"type_name"`
	// package 名称
	PackageName string `json:"package_name"`
	// 指针层级, 也就是 * 的个数
	PointerLevels int `json:"pointer_levels"`
	// 包路径信息
	Path struct {
		Prefix string `json:"prefix,omitempty"` // 相当于 dir 部分
		Full   string `json:"full,omitempty"`   // 完整的 path + package 路径名
	} `json:"path"`

	Kind reflect.Kind `json:"kind"`
}

TypeDesc 描述一个类型的各种信息

func DescribeType

func DescribeType(v any) TypeDesc

DescribeType 描述一个类型

type ValueReader

type ValueReader interface {
	ReadNil(i int, f FieldDesc)
	ReadBool(i int, f FieldDesc, v bool)
	ReadInt64(i int, f FieldDesc, v int64)
	ReadUint64(i int, f FieldDesc, v uint64)
	ReadUintptr(i int, f FieldDesc, v uintptr)
	ReadFloat32(i int, f FieldDesc, v float32)
	ReadFloat64(i int, f FieldDesc, v float64)
	ReadComplex128(i int, f FieldDesc, v complex128)
	ReadArray(i int, f FieldDesc, v any)
	ReadChan(i int, f FieldDesc, v any)
	ReadFunc(i int, f FieldDesc, v any)
	ReadInterface(i int, f FieldDesc, v any)
	ReadMap(i int, f FieldDesc, v any)
	ReadSlice(i int, f FieldDesc, v any)
	ReadString(i int, f FieldDesc, v string)
	ReadStruct(i int, f FieldDesc, v any)
	ReadUnsafePointer(i int, f FieldDesc, v unsafe.Pointer)
}

ValueReader 字段值读取器。其中第一个的 i 参数只在 struct、slice 和 array 有效, 其他情况都为 -1

Jump to

Keyboard shortcuts

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