cmd/opt/float.go

62 lines
1.0 KiB
Go

package opt
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
}
// RequiresVal implements Option.
func (*FloatOption) RequiresVal() bool {
return true
}
func (o *FloatOption) Value() float64 {
return o.value
}