Reflect
The Reflect registry offers tools for inspecting and manipulating data types using reflection, enabling advanced dynamic type handling within your projects.
typeIs
The function compares the type of the provided value (src
) to a specified target type string (target
). It returns true
if the type of src
matches the target type.
Signature
TypeIs(target string, src any) bool
{{ 42 | typeIs "int" }} // Output: true
typeIsLike
The function compares the type of the provided value (src
) to a target type string (target
), with an option for a wildcard *
prefix (pointer). It returns true
if src
matches target
or *target
, which is useful for checking if a variable is of a specific type or a pointer to that type.
Signature
TypeIsLike(target string, src any) bool
{{ 42 | typeIsLike "*int" }} // Output: false
typeOf
The function returns the type of the provided value (src
) as a string, giving you a textual representation of its data type.
Signature
TypeOf(src any) string
{{ 42 | typeOf }} // Output: "int"
kindIs
The function compares the kind (category) of a given value (src
) to a target kind string (target
). It returns true
if the kind of src
matches the specified target kind.
Signature
KindIs(target string, src any) (bool, error)
{{ 42 | kindIs "int" }} // Output: true
{{ nil | kindIs "int" }} // Error
kindOf
The function returns the kind (category) of the provided value (src
) as a string, giving a general classification like "int," "struct," or "slice."
Signature
KindOf(src any) (string, error)
{{ 42 | kindOf }} // Output: "int"
{{ nil | kindOf }} // Error
hasField
The function checks the presence of a field with the specified name (name
) in the provided struct (src
). It returns true
if the field exists.
Signature
HasField(name string, src any) (bool, error)
Assuming Struct has defined as : type Struct struct { V string }
{{ hasField "V" .Struct }} // Output: true
{{ hasField "someNonExistingField" .Struct }} // Output: false
{{ .Struct | hasField "V" }} // Output: true
{{ .Struct | hasField "someNonExistingField" }} // Output: false
deepEqual
The function checks if two variables, x
and y
, are deeply equal by comparing their values and structures using reflect.DeepEqual
.
Signature
DeepEqual(x, y any) bool
{{ .Struct | deepEqual .Struct }} // Output: true
{{ .Struct | deepEqual .SecondStruct }} // Output: false
deepCopy
The function performs a deep copy of the provided element
, creating an exact duplicate of its structure and data. It uses MustDeepCopy
internally to manage the copy process and handle any potential errors. This use the copystructure package internally.
Signature
DeepCopy(element any) (any, error)
{{ dict "name" "John" | deepCopy }} // Output: map[name:John]
{{ nil | deepCopy }} // Error
Last updated