package strings import ( "crypto/md5" "fmt" "golang.org/x/exp/constraints" "io" "strconv" "strings" ) func Join(s ...string) (str string) { if len(s) == 1 { return s[0] } else if len(s) > 1 { b := strings.Builder{} for _, s2 := range s { b.WriteString(s2) } str = b.String() } return } func ToInteger[T constraints.Integer](s string, defaults T) T { if s == "" { return defaults } i, err := strconv.ParseInt(s, 10, 64) if err != nil { return defaults } return T(i) } func Md5(str string) string { h := md5.New() _, err := io.WriteString(h, str) if err != nil { return "" } return fmt.Sprintf("%x", h.Sum(nil)) }