package nullable type Value[T any] struct { value T valid bool } func NewValue[T any](value T) Value[T] { return Value[T]{ value: value, valid: true, } } func NewValuePtr[T any](value *T) Value[T] { if value == nil { return Value[T]{} } return NewValue(*value) } func (n Value[T]) Value() T { return n.value } func (n Value[T]) Valid() bool { return n.valid } func (n Value[T]) ValutPtr() *T { if n.valid { return &n.value } return nil } func (n *Value[T]) Set(value T) { n.valid = true n.value = value }