CloudrevePlus/pkg/util/ztool.go

36 lines
680 B
Go
Raw Permalink Normal View History

2024-02-25 08:30:34 +08:00
package util
import "strings"
type (
// 可取长度类型
LenAble interface{ string | []any | chan any }
)
// 计算切片元素总长度
/*
传入字符串切片, 返回其所有元素长度之和
e.g. LenArray({`ele3`,`ele2`,`ele1`}) => 12
*/
func LenArray[T LenAble](a []T) int {
var o int
for i, r := 0, len(a); i < r; i++ {
o += len(a[i])
}
return o
}
// 字符串快速拼接
/*
传入多个字符串参数, 返回拼接后的结果
e.g: StrConcat("str1", "str2", "str3") => "str1str2str3"
*/
func StrConcat(a ...string) string {
var b strings.Builder
b.Grow(LenArray(a))
for i, r := 0, len(a); i < r; i++ {
b.WriteString(a[i])
}
return b.String()
}