Documentation ¶
Overview ¶
软件包 reflects 实现了对标准反射库的扩展,适用于实现编组和解组软件包。
主要的Mapper类型允许Go兼容的命名属性访问,包括访问嵌入的struct属性以及使用函数和struct标记来自定义字段名称的能力。
Index ¶
- func FieldByIndexes(v reflect.Value, indexes []int) reflect.Value
- func FieldByIndexesReadOnly(v reflect.Value, indexes []int) reflect.Value
- func Indirect(t reflect.Type) reflect.Type
- type FieldInfo
- type Mapper
- func (m *Mapper) FieldByName(v reflect.Value, name string) reflect.Value
- func (m *Mapper) FieldMap(v reflect.Value) map[string]reflect.Value
- func (m *Mapper) FieldsByName(v reflect.Value, names []string) []reflect.Value
- func (m *Mapper) TraversalsByName(t reflect.Type, names []string) [][]int
- func (m *Mapper) TraversalsByNameFunc(t reflect.Type, names []string, fn func(int, []int) error) error
- func (m *Mapper) TypeMap(t reflect.Type) *StructMap
- type StructMap
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FieldByIndexes ¶
FieldByIndexes 为给定值返回结构遍历所给定字段的值。
func FieldByIndexesReadOnly ¶
FieldByIndexesReadOnly 返回用于特定结构遍历的值,但与分配nil指针无关,因为该值将用于读取而不是设置。
Types ¶
type FieldInfo ¶
type FieldInfo struct { Index []int Path string Field reflect.StructField Zero reflect.Value Name string Options map[string]string Embedded bool Children []*FieldInfo Parent *FieldInfo }
FieldInfo 是结构体字段的元数据。是对 reflect.StructField 的扩展。
type Mapper ¶
type Mapper struct {
// contains filtered or unexported fields
}
Mapper 是名称到结构字段的通用映射器。
映射器的行为类似于标准库中的大多数编组器,它遵循用于名称映射的字段标签,但也提供了基本的转换功能。
func NewMapperFunc ¶
NewMapperFunc 返回一个新的映射器,该映射器可以选择服从f给出的字段标签和结构字段名称映射器func。
标签将优先,但是对于任何其他字段,映射的名称将为f(field.Name)
func NewMapperTagFunc ¶
NewMapperTagFunc 返回一个新的映射器,其中包含用于字段名称的映射器和用于标记值的映射器。
这对于像json这样的标签很有用,该标签可以具有“ name,omitempty”之类的值。
func (*Mapper) FieldByName ¶
FieldByName 通过其映射名称返回字段,即 reflect.Value。
如果v的Kind不是Struct或v不可间接访问结构Kind,则感到恐慌。如果找不到名称,则返回零值。
func (*Mapper) FieldsByName ¶
FieldsByName 返回与值的名称切片相对应的值切片。
如果v的Kind不是Struct或v不可间接访问结构Kind,则感到恐慌。对于找不到的每个名称,返回零值。
func (*Mapper) TraversalsByName ¶
TraversalsByName 返回一个int slices的切片,该切片代表每个映射名称的结构遍历。
如果t不是一个结构或该结构不是可间接访问的,则感到恐慌。对于找不到的每个名称,返回空的int切片。
type StructMap ¶
type StructMap struct { Tree *FieldInfo Index []*FieldInfo Paths map[string]*FieldInfo Names map[string]*FieldInfo }
StructMap 是结构体的字段元数据的索引。
func (StructMap) GetByTraversal ¶
GetByTraversal 返回给定整数路径的FieldInfo。
它类似于 reflect.FieldByIndex 但是使用缓存的遍历而不是每次都重新执行反射机制。
Click to show internal directories.
Click to hide internal directories.