43 lines
536 B
Go
43 lines
536 B
Go
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
|
|
}
|