Documentation ¶
Overview ¶
包gstructs提供了用于获取结构体信息的函数。 这个不翻译了, 这是一个偏底层组件,一般业务上很少会用到,在框架、基础库、中间件编写中用到。
Index ¶
- func FieldMap(in FieldMapInput) (map[string]Field, error)
- func ParseTag(tag string) map[string]string
- func TagMapField(object interface{}, priority []string) (map[string]Field, error)
- func TagMapName(pointer interface{}, priority []string) (map[string]string, error)
- type Field
- func (f *Field) IsEmbedded() bool
- func (f *Field) IsEmpty() bool
- func (f *Field) IsExported() bool
- func (f *Field) Kind() reflect.Kind
- func (f *Field) Name() string
- func (f *Field) OriginalKind() reflect.Kind
- func (f *Field) Tag(key string) string
- func (f *Field) TagAdditional() string
- func (f *Field) TagDefault() string
- func (f *Field) TagDescription() string
- func (f *Field) TagExample() string
- func (f *Field) TagIn() string
- func (f *Field) TagJsonName() string
- func (f *Field) TagLookup(key string) (value string, ok bool)
- func (f *Field) TagMap() map[string]string
- func (f *Field) TagParam() string
- func (f *Field) TagStr() string
- func (f *Field) TagSummary() string
- func (f *Field) TagValid() string
- func (f *Field) Type() Type
- func (f *Field) X是否为Nil(traceSource ...bool) bool
- type FieldMapInput
- type FieldsInput
- type RecursiveOption
- type Type
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FieldMap ¶
func FieldMap(in FieldMapInput) (map[string]Field, error)
FieldMap 从`pointer`获取并返回结构体字段为map[name/tag]Field。
参数`pointer`应为struct/*struct类型。
参数`priority`指定了按从高到低优先级获取的标签数组。如果给出`nil`,则返回map[name]Field,其中`name`是属性名称。
参数`recursive`指定了当属性是一个嵌入式结构体时,是否递归地获取其字段。
注意,它仅从结构体中获取首字母大写的导出属性(即公开属性)。
func ParseTag ¶
ParseTag函数用于解析标签字符串并转换为映射(map)。 例如: ParseTag(`v:"required" p:"id" d:"1"`) => map[v:required p:id d:1].
func TagMapField ¶
TagMapField 从`pointer`中获取结构体标签并以map[tag]Field的形式返回。参数`object`应为struct/*struct/[]struct/[]*struct类型。
注意: 1. 它只检索结构体中首字母大写的导出属性(即公开字段)。 2. 参数`priority`必须给出,它只检索具有该给定标签的字段。 3. 如果某个字段没有指定标签,则使用其字段名称作为结果映射键。
Types ¶
type Field ¶
type Field struct { Value reflect.Value // 字段的底层值 Field reflect.StructField // 字段的底层字段。 // 获取到的标签名称,其依赖于TagValue。 TagName string // 获取到的标签值。 // 在该字段中可能包含多个标签, // 但根据调用函数规则,只能获取其中一个。 TagValue string }
Field 包含结构体字段的信息。
func TagFields ¶
TagFields 从`pointer`中获取并返回以[]Field形式的结构体标签。
参数`pointer`应为struct或*struct类型。
注意: 1. 它仅从结构体中获取首字母大写的导出属性(即公开字段)。 2. 参数`priority`应提供,它只检索具有给定标签的字段。
func (*Field) OriginalKind ¶
OriginalKind 从Field `f`的Value中获取并返回其原始的 reflect.Kind 类型。
func (*Field) TagAdditional ¶
TagAdditional 返回该字段最常用的标签 "additional/ad" 的值。
func (*Field) TagDefault ¶
TagDefault 返回该字段最常用的标签 `default/d` 的值。
func (*Field) TagDescription ¶
TagDescription 返回字段中最常用的标签 `description/des/dc` 的值。
func (*Field) TagExample ¶
TagExample 返回该字段最常用的标签 `example/eg` 的值。
func (*Field) TagLookup ¶
TagLookup在tag字符串中查找与key关联的值。 如果key在tag中存在,返回对应的值(可能为空)。 否则,返回值将是空字符串。 ok返回值报告该值是否在tag字符串中显式设置。如果tag不具有常规格式, Lookup返回的值未指定。
func (*Field) TagSummary ¶
TagSummary 返回该字段使用最频繁的标签值,标签键为 `summary`、`sum` 或 `sm`。
type FieldMapInput ¶
type FieldMapInput struct { // Pointer 应为结构体类型。/*struct. */ // TODO 这个属性名称不合适,可能会引起混淆。 Pointer interface{} // PriorityTagArray 指定从高到低检索的优先级标签数组。 // 如果传入 `nil`,则返回 map[name]Field,其中 `name` 是属性名。 PriorityTagArray []string // RecursiveOption 指定当属性是一个嵌入式结构体时,以何种方式递归获取其字段。默认情况下,其值为 RecursiveOptionNone。 // “`go // RecursiveOption 指定了在遇到嵌入式结构体属性时,如何进行递归地获取其字段的选项。默认设置为 RecursiveOptionNone。 RecursiveOption RecursiveOption }
FieldMapInput 是函数 FieldMap 的输入参数结构体类型。
type FieldsInput ¶
type FieldsInput struct { // Pointer 应为结构体类型。/*struct. */ // TODO 这个属性名称不合适,可能会引起混淆。 Pointer interface{} // RecursiveOption 指定当属性是一个嵌入式结构体时,以何种方式递归获取其字段。默认情况下,其值为 RecursiveOptionNone。 // “`go // RecursiveOption 指定了在遇到嵌入式结构体属性时,如何进行递归地获取其字段的选项。默认设置为 RecursiveOptionNone。 RecursiveOption RecursiveOption }
FieldsInput 是函数 Fields 的输入参数结构体类型。
type RecursiveOption ¶
type RecursiveOption int
const ( RecursiveOptionNone RecursiveOption = 0 // 如果字段是嵌入式结构体,则不递归地以 map 形式获取其字段。 RecursiveOptionEmbedded RecursiveOption = 1 // 如果字段是一个嵌入式结构体,则递归地将其字段作为映射获取。 RecursiveOptionEmbeddedNoTag RecursiveOption = 2 // 如果字段是一个嵌入式结构体且该字段没有标签,则递归获取其字段并以映射形式返回。 )
type Type ¶
Type 类型封装了 reflect.Type,提供了额外的功能。
func StructType ¶
StructType 函数检索并返回指定结构体的结构体类型。 参数 `object` 应为 struct 类型、指针到 struct 类型、struct 切片或指针到 struct 切片类型。