Custom Known Value Checks
Custom known value checks can be created by implementing the knownvalue.Check interface.
type Check interface { CheckValue(value any) error String() string}
For example, a StringContains
implementation could look as follows:
var _ knownvalue.Check = stringContains{} type stringContains struct { value string} func (v stringContains) CheckValue(other any) error { otherVal, ok := other.(string) if !ok { return fmt.Errorf("expected string value for StringContains check, got: %T", other) } if !strings.Contains(otherVal, v.value) { return fmt.Errorf("expected string %q to contain %q for StringContains check", otherVal, v.value) } return nil} func (v stringContains) String() string { return v.value} func StringContains(value string) stringContains { return stringContains{ value: value, }}
CheckValue
Method Implementation
The other
parameter passed to the CheckValue
method is one of the following types:
- bool
- map[string]any
- []any
- string
Note: Numerical values will be of type json.Number
, with an underlying type of string
.
Refer to the following built-in known value checks for implementations that handle the different types that can be passed to the CheckValue
method in the other
parameter: