Skip to content
A lightweight library to provide a container for optional values in golang
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
optional
.gitignore
LICENSE
README.md

README.md

Go Report Card

goptional is a lightweight library to provide a container for optional values in golang.

Initialization

// Create an optional with an initial value
opt, _ := optional.Of(5)

// An optional created with a nil value returns an error
_, err := optional.Of(nil)

// Create an empty optional
opt := optional.OfEmpty()

Nil pointer

var nilPointer *int
_, err := Of(nilPointer) // err is not nil

Nil array

nilArray := [3]int{}
_, err := Of(nilArray) // err is not nil

Nil slice

var nilSlice []int
_, err := Of(nilSlice) // err is not nil

Nil map

var nilMap map[int]int
_, err := Of(nilMap) // err is not nil

Nil function

var nilFunction func()
_, err := Of(nilFunction) // err is not nil

Nil structure

type Point struct {
	x, y int
}
var emptyPoint Point
_, err = Of(emptyPoint) // err is nil

Features

// Get its value and an eventual error if the optional is empty
v, err := opt.Get()

// Get the optional value regardless of its emptiness
v := opt.GetValue()

// Test if the optional is not empty
opt.IsPresent()

// Execute a function if the optional is not empty
opt.IfPresent(f)

// Execute a function if the optional is empty
opt.IfNotPresent(f)

// Returns an error if the optional is not empty (otherwise returns a nil value)
err := opt.IfPresentError(errors.New("present")

// Returns an error if the optional is empty (otherwise returns a nil value)
err := opt.IfNotPresentError(errors.New("not present")

// Panic if the optional is not empty
opt.IfPresentPanic("present")

// Panic if the optional is empty
opt.IfNotPresentPanic("not present")
You can’t perform that action at this time.