Files
kurious/internal/common/nullable/value.go
2023-11-26 15:39:34 +03:00

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
}