Documentation ¶
Index ¶
- Constants
- func DumpTypeInfoBFS(t reflect.Type) string
- func DumpTypeInfoDFS(t reflect.Type) string
- func DumpValueInfoBFS(v reflect.Value) string
- func DumpValueInfoDFS(v reflect.Value) string
- func FieldByNames(v reflect.Value, names ...string) (x reflect.Value, ok bool)
- func FollowTypePointer(v reflect.Type) reflect.Type
- func FollowValuePointer(v reflect.Value) reflect.Value
- func IsEmptyValue(v reflect.Value) bool
- func IsFieldExported(sf reflect.StructField) bool
- func IsNilObject(obtained interface{}) (result bool)
- func IsNilType(v reflect.Type) (result bool)
- func IsNilValue(v reflect.Value) (result bool)
- func IsValidTagKey(tagKey string) bool
- func IsZeroValue(v reflect.Value) bool
- func SetFieldByNames(v reflect.Value, names []string, x reflect.Value) (ok bool)
- func Truncate(v interface{}, f func(v interface{}) bool, n int) interface{}
- func TruncateBytes(v interface{}, n int) interface{}
- func TruncateString(v interface{}, n int) interface{}
- func TypeByStructFieldIndex(t reflect.Type, index []int) reflect.Type
- func ValueByStructFieldIndex(v reflect.Value, index []int) reflect.Value
- func Walk(t reflect.Type, visitedOnce bool, ...)
- func WalkTypeBFS(typ reflect.Type, handler FieldTypeInfoHandler)
- func WalkTypeDFS(typ reflect.Type, handler FieldTypeInfoHandler)
- func WalkValueBFS(val reflect.Value, handler FieldValueInfoHandler)
- func WalkValueDFS(val reflect.Value, handler FieldValueInfoHandler)
- type FieldTypeInfo
- type FieldTypeInfoHandler
- type FieldTypeInfoHandlerFunc
- type FieldValueInfo
- type FieldValueInfoHandler
- type FieldValueInfoHandlerFunc
- type StructTag
- func (t *StructTag) AddOptions(key string, options ...string)
- func (t StructTag) AstString() string
- func (t *StructTag) Delete(keys ...string)
- func (t *StructTag) DeleteOptions(key string, options ...string)
- func (t StructTag) Get(key string) (tag SubStructTag, ok bool)
- func (t StructTag) Keys() []string
- func (t StructTag) OrderKeys() []string
- func (t StructTag) OrderedAstString() string
- func (t StructTag) OrderedString() string
- func (t StructTag) OrderedTags() []SubStructTag
- func (t StructTag) SelectAstString(keys ...string) string
- func (t StructTag) SelectString(keys ...string) string
- func (t StructTag) SelectedTags(keys ...string) []SubStructTag
- func (t *StructTag) Set(subTag SubStructTag) error
- func (t *StructTag) SetName(key string, name string)
- func (t StructTag) SortedAstString() string
- func (t StructTag) SortedKeys() []string
- func (t StructTag) SortedString() string
- func (t StructTag) SortedTags() []SubStructTag
- func (t StructTag) String() string
- func (t StructTag) Tags() []SubStructTag
- type SubStructTag
- type TagOptions
Constants ¶
const PtrSize = 4 << (^uintptr(0) >> 63) // unsafe.Sizeof(uintptr(0)) but an ideal const, sizeof *void
Variables ¶
This section is empty.
Functions ¶
func DumpTypeInfoBFS ¶
func DumpTypeInfoDFS ¶
func DumpValueInfoBFS ¶
func DumpValueInfoDFS ¶
func FieldByNames ¶ added in v1.2.7
FieldByNames returns the struct field with the given names. It returns the zero Value if no field was found. It panics if v's Kind is not struct.
func IsEmptyValue ¶
func IsFieldExported ¶
func IsFieldExported(sf reflect.StructField) bool
func IsNilObject ¶
func IsNilObject(obtained interface{}) (result bool)
func IsNilValue ¶
func IsValidTagKey ¶
IsValidTagKey checks if key of struct tag, like `json:"name,omitempty"`, is valid
func SetFieldByNames ¶ added in v1.2.7
SetFieldByNames assigns x to the value v. It panics if CanSet returns false. As in Go, x's value must be assignable to type of v's son, grandson, etc
func Truncate ¶
Truncate reset bytes and string at each run of value c satisfying f(c), useful for dump into log if some field is huge v is truncated in place return interface{} same as truncated v for stream-like api
func TruncateBytes ¶
func TruncateBytes(v interface{}, n int) interface{}
TruncateBytes reset bytes, useful for dump into log if some field is huge v is truncated in place return interface{} same as truncated v for stream-like api
func TruncateString ¶
func TruncateString(v interface{}, n int) interface{}
TruncateString reset string, useful for dump into log if some field is huge v is truncated in place return interface{} same as truncated v for stream-like api
func TypeByStructFieldIndex ¶
t[i][j][...], t[i] is t's ith field, t[i][j] is t[i]'s jth field
func ValueByStructFieldIndex ¶
v[i][j][...], v[i] is v's ith field, v[i][j] is v[i]'s jth field
func Walk ¶
func Walk(t reflect.Type, visitedOnce bool, do func(s reflect.Type, sf reflect.StructField) (stop bool))
Walk walks down v
func WalkTypeBFS ¶
func WalkTypeBFS(typ reflect.Type, handler FieldTypeInfoHandler)
Breadth First Search
func WalkTypeDFS ¶
func WalkTypeDFS(typ reflect.Type, handler FieldTypeInfoHandler)
Wid First Search
func WalkValueBFS ¶
func WalkValueBFS(val reflect.Value, handler FieldValueInfoHandler)
func WalkValueDFS ¶
func WalkValueDFS(val reflect.Value, handler FieldValueInfoHandler)
Types ¶
type FieldTypeInfo ¶
type FieldTypeInfo struct {
// contains filtered or unexported fields
}
A field represents a single field found in a struct.
func (FieldTypeInfo) Depth ¶
func (info FieldTypeInfo) Depth() int
func (FieldTypeInfo) Index ¶
func (info FieldTypeInfo) Index() []int
func (FieldTypeInfo) MiddleNodes ¶
func (info FieldTypeInfo) MiddleNodes() []interface{}
func (FieldTypeInfo) String ¶
func (info FieldTypeInfo) String() string
func (FieldTypeInfo) StructField ¶
func (info FieldTypeInfo) StructField() (reflect.StructField, bool)
type FieldTypeInfoHandler ¶
type FieldTypeInfoHandler interface {
Handler(info FieldTypeInfo) (goon bool)
}
type FieldTypeInfoHandlerFunc ¶
type FieldTypeInfoHandlerFunc func(info FieldTypeInfo) (goon bool)
func (FieldTypeInfoHandlerFunc) Handler ¶
func (f FieldTypeInfoHandlerFunc) Handler(info FieldTypeInfo) (goon bool)
type FieldValueInfo ¶
type FieldValueInfo struct {
// contains filtered or unexported fields
}
A field represents a single field found in a struct.
func (FieldValueInfo) Depth ¶
func (info FieldValueInfo) Depth() int
func (FieldValueInfo) Index ¶
func (info FieldValueInfo) Index() []int
func (FieldValueInfo) MiddleNodes ¶
func (info FieldValueInfo) MiddleNodes() []interface{}
func (*FieldValueInfo) String ¶
func (info *FieldValueInfo) String() string
func (FieldValueInfo) StructField ¶
func (info FieldValueInfo) StructField() (reflect.StructField, bool)
func (FieldValueInfo) Value ¶
func (info FieldValueInfo) Value() reflect.Value
type FieldValueInfoHandler ¶
type FieldValueInfoHandler interface {
Handler(info FieldValueInfo) (goon bool)
}
type FieldValueInfoHandlerFunc ¶
type FieldValueInfoHandlerFunc func(info FieldValueInfo) (goon bool)
func (FieldValueInfoHandlerFunc) Handler ¶
func (f FieldValueInfoHandlerFunc) Handler(info FieldValueInfo) (goon bool)
type StructTag ¶
type StructTag struct {
// contains filtered or unexported fields
}
A StructTag is the tag string in a struct field, as reflect.StructTag .
By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs. Each key is a non-empty string consisting of non-control characters other than space (U+0020 ' '), quote (U+0022 '"'), and colon (U+003A ':'). Each value is quoted using U+0022 '"' characters and Go string literal syntax.
func ParseAstStructTag ¶
ParseAstStructTag parses a single struct field tag of AST and returns the set of subTags. This code is based on the validateStructTag code in package tag `json:"name,omitempty"`, field.Tag.Value returned by AST
func ParseStructTag ¶
ParseStructTag parses a single struct field tag and returns the set of subTags. This code is based on the validateStructTag code in package tag json:"name,omitempty", reflect.StructField.Tag returned by reflect
func (*StructTag) AddOptions ¶
AddOptions adds the given option for the given key. It appends to any existing options associated with key.
func (StructTag) AstString ¶
AstString reassembles the subTags into a valid literal ast tag field representation key is random. tag `json:"name,omitempty"`, field.Tag.Value returned by AST
func (*StructTag) DeleteOptions ¶
DeleteOptions deletes the given options for the given key
func (StructTag) Get ¶
func (t StructTag) Get(key string) (tag SubStructTag, ok bool)
Get returns the tag associated with the given key. If the key is present in the tag the value (which may be empty) is returned. Otherwise the returned value will be the empty string. The ok return value reports whether the tag exists or not (which the return value is nil).
func (StructTag) OrderedAstString ¶
OrderedAstString reassembles the subTags into a valid literal ast tag field representation key is in the original order. tag `json:"name,omitempty"`, field.Tag.Value returned by AST
func (StructTag) OrderedString ¶
OrderedString reassembles the subTags into a valid literal tag field representation key is in the original order. tag json:"name,omitempty", reflect.StructField.Tag returned by reflect
func (StructTag) OrderedTags ¶
func (t StructTag) OrderedTags() []SubStructTag
Tags returns a slice of subTags with original order.
func (StructTag) SelectAstString ¶
SelectAstString reassembles the subTags selected by keys into a valid literal tag field representation tag json:"name,omitempty", reflect.StructField.Tag returned by reflect
func (StructTag) SelectString ¶
SelectString reassembles the subTags selected by keys into a valid literal tag field representation tag json:"name,omitempty", reflect.StructField.Tag returned by reflect
func (StructTag) SelectedTags ¶
func (t StructTag) SelectedTags(keys ...string) []SubStructTag
SelectedTags returns a slice of subTags in keys order.
func (*StructTag) Set ¶
func (t *StructTag) Set(subTag SubStructTag) error
Set sets the given tag. If the tag key already exists it'll override it
func (StructTag) SortedAstString ¶
SortedAstString reassembles the subTags into a valid literal ast tag field representation key is sorted by keys in increasing order. tag `json:"name,omitempty"`, field.Tag.Value returned by AST
func (StructTag) SortedKeys ¶
SortedKeys returns a slice of subTags sorted by keys in increasing order.
func (StructTag) SortedString ¶
SortedString reassembles the subTags into a valid literal tag field representation key is sorted by keys in increasing order. tag json:"name,omitempty", reflect.StructField.Tag returned by reflect
func (StructTag) SortedTags ¶
func (t StructTag) SortedTags() []SubStructTag
OrderedTags returns a slice of subTags sorted by keys in increasing order.
func (StructTag) String ¶
String reassembles the subTags into a valid literal tag field representation key is random. tag json:"name,omitempty", reflect.StructField.Tag returned by reflect
func (StructTag) Tags ¶
func (t StructTag) Tags() []SubStructTag
Tags returns a slice of subTags with original order.
type SubStructTag ¶
type SubStructTag struct { // Key is the tag key, such as json, xml, etc. // i.e: `json:"foo,omitempty". Here key is: "json" Key string // Name is a part of the value // i.e: `json:"foo,omitempty". Here name is: "foo" Name string // Options is a part of the value. It contains a slice of tag options i.e: // `json:"foo,omitempty". Here options is: ["omitempty"] Options []string }
SubStructTag defines a single struct's string literal tag
func (*SubStructTag) AddOptions ¶
func (t *SubStructTag) AddOptions(opts ...string)
AddOptions adds the given option. It ignores any duplicated option.
func (*SubStructTag) DeleteOptions ¶
func (t *SubStructTag) DeleteOptions(opts ...string)
DeleteOptions removes the given option. It ignores any option not found.
func (*SubStructTag) GoString ¶
func (t *SubStructTag) GoString() string
GoString implements the fmt.GoStringer interface
func (*SubStructTag) HasOption ¶
func (t *SubStructTag) HasOption(opt string) bool
HasOption returns true if the given option is available in options
func (*SubStructTag) String ¶
func (t *SubStructTag) String() string
String reassembles the tag into a valid tag field representation
func (*SubStructTag) Value ¶
func (t *SubStructTag) Value() string
Value returns the raw value of the tag, i.e. if the tag is `json:"foo,omitempty", the Value is "foo,omitempty"
type TagOptions ¶
type TagOptions string
TagOptions is the string following a comma in a struct field's "json" tag, or the empty string. It does not include the leading comma.
func ParseTagOptions ¶
func ParseTagOptions(tag string) (tagName string, opts TagOptions)
ParseTagOptions splits a struct field's json tag into its name and comma-separated options.
func (TagOptions) Contains ¶
func (o TagOptions) Contains(optionName string) bool
Contains reports whether a comma-separated list of options contains a particular substr flag. substr must be surrounded by a string boundary or commas.