|
- package arg
-
- import "fmt"
-
- // FormatNumber format number.
- type FormatNumber int
-
- // format argument.
- const (
- NumberFormatUndefined FormatNumber = iota
- NumberFormatDecimal
- NumberFormatPercent
- NumberFormatPerMille
- NumberFormatEngineering
- NumberFormatScientific
- )
-
- // NumberOption configure number argument.
- type NumberOption func(*Number)
-
- // WithNumberFormat sets format number.
- func WithNumberFormat(format FormatNumber) NumberOption {
- return func(n *Number) { n.Format = format }
- }
-
- // Number argument.
- type Number struct {
- Key string
- Value interface{}
- Format FormatNumber
- }
-
- // Configure number.
- func (n Number) Configure(opts ...NumberOption) Number {
- for _, o := range opts {
- o(&n)
- }
-
- return n
- }
-
- // Val gets number value.
- func (n Number) Val() interface{} {
- return n.Value
- }
-
- // String number to string.
- func (n Number) String() string {
- return fmt.Sprintf("number key: %s, value: %v", n.Key, n.Value)
- }
|