GoDoxy/internal/utils/strutils/parser.go

35 lines
559 B
Go

package strutils
import (
"reflect"
"strconv"
)
type Parser interface {
Parse(value string) error
}
func Parse[T Parser](from string) (t T, err error) {
tt := reflect.TypeOf(t)
if tt.Kind() == reflect.Ptr {
t = reflect.New(tt.Elem()).Interface().(T)
}
err = t.Parse(from)
return t, err
}
func MustParse[T Parser](from string) T {
t, err := Parse[T](from)
if err != nil {
panic("must failed: " + err.Error())
}
return t
}
func ParseBool(from string) bool {
b, err := strconv.ParseBool(from)
if err != nil {
return false
}
return b
}