reflect

package
v0.0.151 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2022 License: MIT Imports: 11 Imported by: 10

Documentation

Index

Constants

View Source
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 DumpTypeInfoBFS(t reflect.Type) string

func DumpTypeInfoDFS

func DumpTypeInfoDFS(t reflect.Type) string

func DumpValueInfoBFS

func DumpValueInfoBFS(v reflect.Value) string

func DumpValueInfoDFS

func DumpValueInfoDFS(v reflect.Value) string

func FollowTypePointer

func FollowTypePointer(v reflect.Type) reflect.Type

func FollowValuePointer

func FollowValuePointer(v reflect.Value) reflect.Value

func IsEmptyValue

func IsEmptyValue(v reflect.Value) bool

func IsFieldExported

func IsFieldExported(sf reflect.StructField) bool

func IsNilObject

func IsNilObject(obtained interface{}) (result bool)

func IsNilType

func IsNilType(v reflect.Type) (result bool)

nil, unknown type

func IsNilValue

func IsNilValue(v reflect.Value) (result bool)

func IsValidTagKey added in v0.0.51

func IsValidTagKey(tagKey string) bool

IsValidTagKey checks if key of struct tag, like `json:"name,omitempty"`, is valid

func IsZeroValue

func IsZeroValue(v reflect.Value) bool

cmd/compile/internal/gc/dump.go

func Truncate added in v0.0.150

func Truncate(v interface{}, f func(v interface{}) bool, n int) interface{}

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 added in v0.0.150

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 added in v0.0.150

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

func TypeByStructFieldIndex(t reflect.Type, index []int) reflect.Type

t[i][j][...], t[i] is t's ith field, t[i][j] is t[i]'s jth field

func ValueByStructFieldIndex

func ValueByStructFieldIndex(v reflect.Value, index []int) reflect.Value

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 added in v0.0.51

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 added in v0.0.53

func ParseAstStructTag(tag string) (*StructTag, error)

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 added in v0.0.51

func ParseStructTag(tag string) (*StructTag, error)

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 added in v0.0.51

func (t *StructTag) AddOptions(key string, options ...string)

AddOptions adds the given option for the given key. It appends to any existing options associated with key.

func (StructTag) AstString added in v0.0.53

func (t StructTag) AstString() string

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) Delete added in v0.0.51

func (t *StructTag) Delete(keys ...string)

Delete deletes the tag for the given keys

func (*StructTag) DeleteOptions added in v0.0.51

func (t *StructTag) DeleteOptions(key string, options ...string)

DeleteOptions deletes the given options for the given key

func (StructTag) Get added in v0.0.51

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) Keys added in v0.0.51

func (t StructTag) Keys() []string

Keys returns a slice of subTags.

func (StructTag) OrderKeys added in v0.0.79

func (t StructTag) OrderKeys() []string

Keys returns a slice of subTags with original order.

func (StructTag) OrderedAstString added in v0.0.79

func (t StructTag) OrderedAstString() string

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 added in v0.0.79

func (t StructTag) OrderedString() string

String 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 added in v0.0.79

func (t StructTag) OrderedTags() []SubStructTag

Tags returns a slice of subTags with original order.

func (StructTag) SelectAstString added in v0.0.79

func (t StructTag) SelectAstString(keys ...string) string

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 added in v0.0.79

func (t StructTag) SelectString(keys ...string) string

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 added in v0.0.79

func (t StructTag) SelectedTags(keys ...string) []SubStructTag

SelectedTags returns a slice of subTags in keys order.

func (*StructTag) Set added in v0.0.51

func (t *StructTag) Set(subTag SubStructTag) error

Set sets the given tag. If the tag key already exists it'll override it

func (*StructTag) SetName added in v0.0.56

func (t *StructTag) SetName(key string, name string)

AddNameAndOptions sets the given name for the given key.

func (StructTag) SortedAstString added in v0.0.79

func (t StructTag) SortedAstString() string

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 added in v0.0.79

func (t StructTag) SortedKeys() []string

Keys returns a slice of subTags sorted by keys in increasing order.

func (StructTag) SortedString added in v0.0.79

func (t StructTag) SortedString() string

String 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 added in v0.0.79

func (t StructTag) SortedTags() []SubStructTag

OrderedTags returns a slice of subTags sorted by keys in increasing order.

func (StructTag) String added in v0.0.51

func (t StructTag) String() 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 added in v0.0.51

func (t StructTag) Tags() []SubStructTag

Tags returns a slice of subTags with original order.

type SubStructTag added in v0.0.51

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 added in v0.0.51

func (t *SubStructTag) AddOptions(opts ...string)

AddOptions adds the given option. It ignores any duplicated option.

func (*SubStructTag) DeleteOptions added in v0.0.51

func (t *SubStructTag) DeleteOptions(opts ...string)

DeleteOptions removes the given option. It ignores any option not found.

func (*SubStructTag) GoString added in v0.0.51

func (t *SubStructTag) GoString() string

GoString implements the fmt.GoStringer interface

func (*SubStructTag) HasOption added in v0.0.51

func (t *SubStructTag) HasOption(opt string) bool

HasOption returns true if the given option is available in options

func (*SubStructTag) String added in v0.0.51

func (t *SubStructTag) String() string

String reassembles the tag into a valid tag field representation

func (*SubStructTag) Value added in v0.0.51

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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