Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Value ¶
Value implements a Future Value in which a reference is initialized once (and only once) using the Initialize function. Only one Go routine can call Initialize whereas multiple Go routines may invoke Get, and will wait until the reference has been initialized. Regardless of whether Initialize returns success or error, the value cannot be initialized again.
func (*Value) Get ¶
Get returns the value and/or error that occurred during initialization.
Example ¶
fv := New(func() (interface{}, error) { return "Value1", nil }) done := make(chan bool) go func() { value, err := fv.Get() if err != nil { fmt.Printf("Error returned from Get: %s\n", err) } fmt.Println(value) done <- true }() fv.Initialize() <-done
Output: Value1
func (*Value) Initialize ¶
Initialize initializes the future value. This function must be called only once. Subsequent calls may result in deadlock.
func (*Value) MustGet ¶
func (f *Value) MustGet() interface{}
MustGet returns the value. If an error resulted during initialization then this function will panic.
Example ¶
fv := New(func() (interface{}, error) { return "Value1", nil }) done := make(chan bool) go func() { fmt.Println(fv.MustGet()) done <- true }() fv.Initialize() <-done
Output: Value1