57 lines
970 B
Go
57 lines
970 B
Go
|
package opts
|
||
|
|
||
|
import "strconv"
|
||
|
|
||
|
type FloatOption struct {
|
||
|
name string
|
||
|
shortName string
|
||
|
description string
|
||
|
value float64
|
||
|
}
|
||
|
|
||
|
var _ Option = (*FloatOption)(nil)
|
||
|
|
||
|
func Float(name, shortName string, defaultValue float64, description string) *FloatOption {
|
||
|
return &FloatOption{
|
||
|
name: name,
|
||
|
shortName: shortName,
|
||
|
description: description,
|
||
|
value: defaultValue,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Description implements Option.
|
||
|
func (o *FloatOption) Description() string {
|
||
|
return o.description
|
||
|
}
|
||
|
|
||
|
// Name implements Option.
|
||
|
func (o *FloatOption) Name() string {
|
||
|
return o.name
|
||
|
}
|
||
|
|
||
|
// ShortName implements Option.
|
||
|
func (o *FloatOption) ShortName() string {
|
||
|
return o.shortName
|
||
|
|
||
|
}
|
||
|
|
||
|
// Value implements Option.
|
||
|
func (o *FloatOption) Parse(raw string) error {
|
||
|
if raw == "" {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
floatVal, err := strconv.ParseFloat(raw, 64)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
o.value = floatVal
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (o *FloatOption) Value() float64 {
|
||
|
return o.value
|
||
|
}
|