45 lines
974 B
Go
45 lines
974 B
Go
package ask
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
func Int(query string, min, max int) int {
|
|
return raw(query, '\n', func(s string) (v int, msg string) {
|
|
v, err := strconv.Atoi(s)
|
|
if err != nil {
|
|
msg = "please enter a number"
|
|
return v, msg
|
|
}
|
|
if min >= 0 && v < min {
|
|
msg = fmt.Sprintf("your number must be bigger than %d", min)
|
|
return v, msg
|
|
}
|
|
if max >= 0 && v > max {
|
|
msg = fmt.Sprintf("your number must be smaller than %d", max)
|
|
return v, msg
|
|
}
|
|
return v, msg
|
|
})
|
|
}
|
|
|
|
func Float64(query string, min, max float64) float64 {
|
|
return raw(query, '\n', func(s string) (v float64, msg string) {
|
|
v, err := strconv.ParseFloat(s, 64)
|
|
if err != nil {
|
|
msg = "please enter a number"
|
|
return v, msg
|
|
}
|
|
if min >= 0 && v < min {
|
|
msg = fmt.Sprintf("your number must be bigger than %g", min)
|
|
return v, msg
|
|
}
|
|
if max >= 0 && v > max {
|
|
msg = fmt.Sprintf("your number must be smaller than %g", max)
|
|
return v, msg
|
|
}
|
|
return v, msg
|
|
})
|
|
}
|