Add optional container
This commit is contained in:
parent
fc1af9f4a1
commit
1547391126
31
container/optional.go
Normal file
31
container/optional.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package ucontainer
|
||||||
|
|
||||||
|
// Optional is an optional value.
|
||||||
|
type Optional[T any] struct {
|
||||||
|
value T
|
||||||
|
exists bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// Value returns the value and true if the value exists. If not, it returns the
|
||||||
|
// last set value and false.
|
||||||
|
func (this *Optional[T]) Value () (T, bool) {
|
||||||
|
return this.value, this.exists
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set sets the value.
|
||||||
|
func (this *Optional[T]) Set (value T) {
|
||||||
|
this.value = value
|
||||||
|
this.exists = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unset unsets the value.
|
||||||
|
func (this *Optional[T]) Unset () {
|
||||||
|
var zero T
|
||||||
|
this.value = zero
|
||||||
|
this.exists = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exists returns if the value is currently set.
|
||||||
|
func (this *Optional[T]) Exists () bool {
|
||||||
|
return this.exists
|
||||||
|
}
|
Reference in New Issue
Block a user