Documentation ¶
Overview ¶
reflectwalk is a package that allows you to "walk" complex structures similar to how you may "walk" a filesystem: visiting every element one by one and calling callback functions allowing you to handle and manipulate those elements.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Walk ¶
func Walk(data, walker interface{}) (err error)
Walk takes an arbitrary value and an interface and traverses the value, calling callbacks on the interface if they are supported. The interface should implement one or more of the walker interfaces in this package, such as PrimitiveWalker, StructWalker, etc.
Types ¶
type EnterExitWalker ¶
EnterExitWalker implementations are notified before and after they walk deeper into complex structures (into struct fields, into slice elements, etc.)
type MapWalker ¶
MapWalker implementations are able to handle individual elements found within a map structure.
type PointerWalker ¶
PointerWalker implementations are notified when the value they're walking is a pointer or not. Pointer is called for _every_ value whether it is a pointer or not.
type PrimitiveWalker ¶
PrimitiveWalker implementations are able to handle primitive values within complex structures. Primitive values are numbers, strings, booleans, funcs, chans.
These primitive values are often members of more complex structures (slices, maps, etc.) that are walkable by other interfaces.
type SliceWalker ¶
SliceWalker implementations are able to handle slice elements found within complex structures.
type StructWalker ¶
type StructWalker interface { Struct(reflect.Value) error StructField(reflect.StructField, reflect.Value) error }
StructWalker is an interface that has methods that are called for structs when a Walk is done.