Documentation ¶
Overview ¶
Package options implements the Functional Options pattern which provides clean APIs in Go. Options implemented as a function set the state of that option. Inspired by https://github.com/tmrts/go-patterns/blob/master/idiom/functional-options.md
Index ¶
Constants ¶
const (
// Version current version number
Version = "0.0.1"
)
Variables ¶
This section is empty.
Functions ¶
func Struct ¶
func Struct(defaultOptions interface{}, opt ...OptionSetter) error
Struct receives default options (pointer to struct) and any option setters fills the static pointer to struct (defaultOptions) returns an error if somethinf bad happen, for example if wrong type kind of value is setted
Types ¶
type OptionSetter ¶
type OptionSetter interface { // Set receives an Options, which itself implements the OptionSetter, and sets any key-based pair values Set(Options) }
OptionSetter contains the Set function Is the receiver to set any options
func Option ¶
func Option(key string, val interface{}) OptionSetter
Option sets a single option's value, implements the OptionSetter, so it can be passed to the .New,.Default & .Struct also useful when you 'like' to pass .Default(Option("key","value")) instead of .Default(Options{Key:value}), both do the same thing
type Options ¶
type Options map[string]interface{}
Options is just a map[string]interface{} which implements the OptionSetter too this map can be converted to Struct if call 'options.Struct'
func Default ¶
func Default(opt ...OptionSetter) Options
Default accepts option setters and returns the new filled Options, you can pass multi Options as OptionSetter too
func New ¶
func New(defOptions Options, opt ...OptionSetter) (Options, func(interface{}) error)
New receives default options, which can be empty and any option setters returns two values returns the new, filled from the setters, Options and a function which is optionally called by the caller, which receives an interface and returns this interface(pointer to struct) filled by the Setters(same as .Struct)