Files
linkshare/internal/util/option/option.go
2025-05-10 13:49:14 +02:00

42 lines
574 B
Go

package option
type Option[T any] struct {
hasValue bool
value T
}
func Some[T any](value T) Option[T] {
return Option[T]{
hasValue: true,
value: value,
}
}
func None[T any]() Option[T] {
return Option[T]{
hasValue: false,
}
}
func (o Option[T]) IsSome() bool {
return o.hasValue
}
func (o Option[T]) IsNone() bool {
return !o.hasValue
}
func (o Option[T]) Value() T {
if !o.hasValue {
panic("Option has no value")
}
return o.value
}
func (o Option[T]) ValueOr(defaultValue T) T {
if !o.hasValue {
return defaultValue
}
return o.value
}