Je kunt niet meer dan 25 onderwerpen selecteren
Onderwerpen moeten beginnen met een letter of nummer, kunnen streepjes bevatten ('-') en kunnen maximaal 35 tekens lang zijn.
49 regels
911 B
49 regels
911 B
package arg
|
|
|
|
import "fmt"
|
|
|
|
// FormatNumber format number.
|
|
type FormatNumber int
|
|
|
|
// format argument.
|
|
const (
|
|
NumberFormatDecimal FormatNumber = iota + 1
|
|
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)
|
|
}
|
|
|