Documentation
¶
Index ¶
- func Equal[T comparable](l, r Und[T]) bool
- func UndValidate[T validate.UndValidator](u Und[T]) error
- type SqlNull
- type Und
- func Clone[T comparable](u Und[T]) Und[T]
- func Defined[T any](t T) Und[T]
- func FromOption[T any](opt option.Option[option.Option[T]]) Und[T]
- func FromPointer[T any](v *T) Und[T]
- func FromSqlNull[T any](v sql.Null[T]) Und[T]
- func FromUnd[T any](u und.Und[T]) Und[T]
- func Map[T, U any](u Und[T], f func(t T) U) Und[U]
- func Null[T any]() Und[T]
- func Undefined[T any]() Und[T]
- func WrapPointer[T any](t *T) Und[*T]
- func (u Und[T]) CloneFunc(cloneT func(T) T) Und[T]
- func (u Und[T]) DoublePointer() **T
- func (u Und[T]) EqualFunc(v Und[T], cmp func(i, j T) bool) bool
- func (u Und[T]) IsDefined() bool
- func (u Und[T]) IsNull() bool
- func (u Und[T]) IsUndefined() bool
- func (u Und[T]) IsZero() bool
- func (u Und[T]) Iter() iter.Seq[option.Option[T]]
- func (u Und[T]) LogValue() slog.Value
- func (u Und[T]) Map(f func(option.Option[option.Option[T]]) option.Option[option.Option[T]]) Und[T]
- func (u Und[T]) MarshalJSON() ([]byte, error)
- func (o Und[T]) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (u Und[T]) Pointer() *T
- func (u Und[T]) SqlNull() sql.Null[T]
- func (u Und[T]) State() und.State
- func (u Und[T]) Und() und.Und[T]
- func (u Und[T]) UndCheck() error
- func (u Und[T]) UndValidate() error
- func (u *Und[T]) UnmarshalJSON(data []byte) error
- func (o *Und[T]) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
- func (u Und[T]) Unwrap() option.Option[option.Option[T]]
- func (u Und[T]) Value() T
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Equal ¶
func Equal[T comparable](l, r Und[T]) bool
Equal tests equality of l and r then returns true if they are equal, false otherwise. For those types that are comparable but need special tests, e.g. time.Time, you should use Und.EqualFunc instead.
func UndValidate ¶
func UndValidate[T validate.UndValidator](u Und[T]) error
Types ¶
type SqlNull ¶
SqlNull[T] adapts Und[T] to sql.Scanner and driver.Valuer.
func (*SqlNull[T]) Scan ¶
Scan implements sql.Scanner.
If T or *T implements sql.Scanner, the implementation is used. Otherwise, SqlNull[T] falls back to sql.Null[T] as sql.Scanner.
type Und ¶
Und[T] is a slice-based variant of und.Und.
Und[T] exposes same set of methods as und.Und and can be used in almost same way. Although it exposes its internal value, it is only intended to let some encoders, e.g. encoding/json, etc, see it as omittable value. You should manipulate the value only through methods.
*undefined* Und[T] struct fields are omitted by encoding/json if either or both of `json:",omitempty"` and `json:",omitzero"` (for Go 1.24 or later) options are attached to those fields.
func FromOption ¶
FromOptions converts opt into an Und[T]. opt is retained by the returned value.
func FromPointer ¶
FromPointer converts *T into Und[T]. If v is nil, it returns an undefined Und. Otherwise, it returns Defined[T] whose value is the dereferenced v.
If you need to keep t as pointer, use WrapPointer instead.
func FromSqlNull ¶
FromSqlNull converts a valid sql.Null[T] to a defined Und[T] and invalid one into a null Und[].
func WrapPointer ¶
WrapPointer converts *T into Und[*T]. The und value is defined if t is non nil, undefined otherwise.
If you want t to be dereferenced, use FromPointer instead.
func (Und[T]) DoublePointer ¶
func (u Und[T]) DoublePointer() **T
DoublePointer returns nil if u is undefined, &(*T)(nil) if null, the internal value if defined.
func (Und[T]) EqualFunc ¶
EqualFunc reports whether two Und values are equal. EqualFunc checks state of both. If both state does not match, it returns false. If both are "defined" state, then checks equality of their value by cmp, then returns true if they are equal.
func (Und[T]) IsDefined ¶
IsDefined returns true if u contains a value. Through this method, you can check validity of the value returned from Value method.
func (Und[T]) IsUndefined ¶
IsUndefined returns true if u is an undefined value, otherwise false.
func (Und[T]) IsZero ¶
IsZero is an alias for IsUndefined. Using `json:",omitzero"` option with "github.com/go-json-experiment/json" omits this field while encoding if IsZero returns true.
func (Und[T]) Iter ¶
Iter returns an iterator over the internal option. If u is undefined, the iterator yields nothing, otherwise the internal option.
func (Und[T]) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (Und[T]) MarshalXML ¶
MarshalXML implements xml.Marshaler.
func (Und[T]) Pointer ¶
func (u Und[T]) Pointer() *T
Pointer returns u's internal value as a pointer.
func (Und[T]) UndValidate ¶
func (*Und[T]) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
func (*Und[T]) UnmarshalXML ¶
UnmarshalXML implements xml.Unmarshaler.