Documentation ¶
Index ¶
- Variables
- func ArrConcat[V any, T []V](arr T, arrs ...T) T
- func ArrEvery[V any, T []V](arr T, fn func(val V, idx int) bool) bool
- func ArrFilter[V any, T []V](arr T, fn func(val V, idx int) bool) T
- func ArrFind[V any, T []V](arr T, fn func(val V, idx int) bool) V
- func ArrIncludes[V comparable, T []V](arr T, val V) bool
- func ArrJoin[V any, T []V, R any](arr T, sep R) string
- func ArrMap[V any, T []V, R any](arr T, fn func(val V, idx int) R) []R
- func ArrPop[V any, T []V](arr *T) V
- func ArrShift[V any, T []V](arr *T) V
- func ArrSome[V any, T []V](arr T, fn func(val V, idx int) bool) bool
- func ArrSplice[V any, T []V](arr *T, start, length int, val ...V) T
- func Decode[T comparable](val T, matches ...T) (v T)
- func HmacSha256(secret, data []byte) string
- func HmacSha256Any(secret, data any) string
- func HmacSha256Str(secret, data string) string
- func Http[T any](fn func() (res T, err error), httpConf ...HttpConfig) (res T, err error)
- func HttpWorks(fn func() (stop bool, err error), httpConf ...HttpConfig) (err error)
- func IIf[T any](condition bool, ifTrue, ifFalse T) T
- func JSON(data any) string
- func Join[V any, T []V, R any](arr T, sep R) string
- func Log(msg ...any)
- func LogBlue(msg ...any)
- func LogColor(attr color.Attribute, msg ...any)
- func LogGreen(msg ...any)
- func LogRed(msg ...any)
- func Max[T Numeric | string](val T, vals ...T) T
- func Md5(b []byte) string
- func Md5Any(str any) string
- func Md5Str(str string) string
- func Min[T Numeric | string](val T, vals ...T) T
- func NewErr(strs ...any) error
- func Now() string
- func Nvl[T comparable](val T, vals ...T) T
- func Print(msg ...any)
- func PrintBlue(msg ...any)
- func PrintColor(attr color.Attribute, msg ...any)
- func PrintGreen(msg ...any)
- func PrintJSON(data any) (j string)
- func PrintRed(msg ...any)
- func RandAreaCode() string
- func RandAreaName() string
- func RandChar(num int) (chars string)
- func RandDevice() (brand, model string)
- func RandIMEI() string
- func RandInt(min, max int) int
- func RandKey(num int) string
- func RandLocation() (lat float64, lon float64)
- func RandNum(length int) (str string)
- func RandStr(num int) string
- func Sha256(b []byte) string
- func Sha256Any(str any) string
- func Sha256Str(str string) string
- func Space(n int) string
- func Str(v any) string
- func StrToFloat32(str string) (f32 float32)
- func StrToFloat64(str string) (f64 float64)
- func Trim(str string, cutset ...string) string
- func UUID() string
- func UniqID() string
- func XID() string
- type AreaCodeItem
- type HttpConfig
- type Numeric
Examples ¶
- ArrConcat
- ArrEvery
- ArrFilter
- ArrFind
- ArrIncludes
- ArrJoin
- ArrMap
- ArrPop
- ArrShift
- ArrSome
- ArrSplice
- Decode
- HmacSha256
- HmacSha256Any
- HmacSha256Str
- Http
- HttpWorks
- IIf
- JSON
- Join
- Max
- Md5
- Md5Any
- Md5Str
- Min
- NewErr
- Nvl
- PrintColor
- PrintRed
- RandChar
- RandDevice
- RandIMEI
- RandInt
- RandKey
- RandLocation
- RandNum
- RandStr
- Sha256
- Sha256Any
- Sha256Str
- Space
- Str
- StrToFloat32
- StrToFloat64
- Trim
- UUID
- UniqID
- XID
Constants ¶
This section is empty.
Variables ¶
var (
AreaCodes []AreaCodeItem
)
var DeviceList = map[string][]string{
"HUAWEI": {
"LIO-AN00",
"TAS-AN00",
"TAS-AL00",
"LYA-AL10",
"HMA-AL00",
"VOG-AL00",
"ELE-AL00",
"OXF-AN10",
"OXF-AN00",
"PCT-AL10",
"YAL-AL10",
"YAL-AL00",
"WLZ-AN00",
"SEA-AL10",
},
"XiaoMi": {
"MI9",
},
"Meizu": {
"M973Q",
},
"OPPO": {
"PCLM10",
"PCRT00",
},
"vivo": {
"V1916A",
"V1824A",
"V1936A",
"V1923A",
"V1938CT",
"V1938T",
},
"samsung": {
"SM-N9760",
"SM-N9700",
"SM-G9750",
"SM-G9730",
},
"OnePlus": {
"HD1910",
"HD1900",
"GM1910",
"GM1900",
},
"realme": {
"RMX1931",
},
"nubia": {
"NX627J",
"NX629J",
},
"smartisan": {
"DT1901A",
},
}
Functions ¶
func ArrConcat ¶
func ArrConcat[V any, T []V](arr T, arrs ...T) T
ArrConcat 将多个数组的元素拼接到一个数组
Example ¶
arr := []int{1, 2, 3} arr2 := []int{4, 5, 6} fmt.Println(ArrConcat(arr, arr2))
Output: [1 2 3 4 5 6]
func ArrEvery ¶
ArrEvery 循环数组,并在fn()返回false时提前结束循环
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrEvery(arr, func(val int, idx int) bool { return val > 0 })) fmt.Println(ArrEvery(arr, func(val int, idx int) bool { return val > 1 }))
Output: true false
func ArrFilter ¶
ArrFilter 元素筛选,fn()返回true的元素保留
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrFilter(arr, func(val int, idx int) bool { return val%2 == 0 }))
Output: [2 4]
func ArrFind ¶
ArrFind 查找元素:返回fn()首次为true的元素,否则返回
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrFind(arr, func(val int, idx int) bool { return val%2 == 0 }))
Output: 2
func ArrIncludes ¶
func ArrIncludes[V comparable, T []V](arr T, val V) bool
ArrIncludes 判断数组是否包含指定元素
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrIncludes(arr, 0)) fmt.Println(ArrIncludes(arr, 1))
Output: false true
func ArrJoin ¶
ArrJoin 将数组元素转为string,为使用sep拼接
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrJoin(arr, "x"))
Output: 1x2x3x4x5
func ArrMap ¶
ArrMap 元素重构:使用fn()的返回值替换原值
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrMap(arr, func(v int, i int) int { return v * 2 }))
Output: [2 4 6 8 10]
func ArrPop ¶
func ArrPop[V any, T []V](arr *T) V
ArrPop 从数组中移除最后一个元素,并返回
- 无可移除元素时返回指定类型的空值
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrPop(&arr)) fmt.Println(arr)
Output: 5 [1 2 3 4]
func ArrShift ¶
func ArrShift[V any, T []V](arr *T) V
ArrShift 从数组中移除第一个元素,并返回
- 无可移除元素时返回指定类型的空值
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrShift(&arr)) fmt.Println(arr)
Output: 1 [2 3 4 5]
func ArrSome ¶
ArrSome 循环数组,并在fn()返回true时提前结束循环
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrSome(arr, func(val int, idx int) bool { return val > 0 })) fmt.Println(ArrSome(arr, func(val int, idx int) bool { return val > 5 }))
Output: true false
func ArrSplice ¶
ArrSplice 从数组arr的起始位置start开始,删去length个元素,并将val拼接至最后,返回删除的元素切片
- 若start为负数,则从尾部开始算,如:-5,表示从倒数第5个元素开始
- 此方法传入的arr为指针(*T),会改变原数组
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(ArrSplice(&arr, 2, 2, 7, 8, 9)) fmt.Println(arr) fmt.Println(ArrSplice(&arr, -1, 2, 10, 11, 12)) fmt.Println(arr)
Output: [3 4] [1 2 5 7 8 9] [9] [1 2 5 7 8 10 11 12]
func Decode ¶
func Decode[T comparable](val T, matches ...T) (v T)
Decode 类似oracle的decode、php8的match
- 参数为两个一组,依次往后匹配
1. 若某组的首个值与val相等,则返回该组第2个值
2. 若某组仅1个值,则直接返回该值
3. 否则返回与val相同类型的空值
Example ¶
fmt.Println(Decode(5, 1, 10, 5, 50)) fmt.Println(Decode(5, 1, 10, 3, 30)) fmt.Println(Decode(5, 1, 10, 3, 30, 25)) fmt.Println(Decode("5", "1", "10", "2", "20")) fmt.Println(Decode("5", "1", "10", "5", "20"))
Output: 50 0 25 20
func HmacSha256 ¶
HmacSha256 HmacSha256加密
Example ¶
fmt.Println(HmacSha256([]byte("key"), []byte("abcdefg")))
Output: 4718cebf3bde5716605b6fea813757e05dc234ee47bb6c81b7559d4731949771
func HmacSha256Any ¶
HmacSha256Any HmacSha256加密
Example ¶
var s = struct { Name string Phone string }{ "Teval", "15656565656", } fmt.Println(HmacSha256Any([]byte("key"), s)) fmt.Println(HmacSha256Any([]byte("key"), fmt.Sprintf(`%+v`, s))) fmt.Println(fmt.Sprintf(`%+v`, s))
Output: c764cb7f3cebe567e98bc70b8a30f9a7b6d2d36112324abee4475fbd6756ef4e c764cb7f3cebe567e98bc70b8a30f9a7b6d2d36112324abee4475fbd6756ef4e {Name:Teval Phone:15656565656}
func HmacSha256Str ¶
HmacSha256Str HmacSha256加密
Example ¶
fmt.Println(HmacSha256Str("key", "abcdefg"))
Output: 4718cebf3bde5716605b6fea813757e05dc234ee47bb6c81b7559d4731949771
func Http ¶ added in v0.0.15
func Http[T any](fn func() (res T, err error), httpConf ...HttpConfig) (res T, err error)
Http fn返回错误时重试,一般用于使用代理后的网络请求
httpConf.Delay 重试间隔 默认1秒
httpConf.Times 重试次数 默认5次
Example ¶
b, err := Http(func() (res goz.ResponseBody, err error) { return curl.Get("http://baidu.com") }) fmt.Println(b.GetContents(), err)
Output: <html> <meta http-equiv="refresh" content="0;url=http://www.baidu.com/"> </html> <nil>
func HttpWorks ¶ added in v0.0.15
func HttpWorks(fn func() (stop bool, err error), httpConf ...HttpConfig) (err error)
HttpWorks fn返回错误时重试,一般用于对使用代理的网络请求的响应的处理,得到正确的结果后可通过stop=true提前结束
httpConf.Delay 重试间隔 默认1秒
httpConf.Times 重试次数 默认5次
Example ¶
fmt.Println(HttpWorks(func() (stop bool, err error) { return false, NewErr("times") }))
Output: times
func IIf ¶
IIf 三元:当条件为true时,返回ifTrue,否则返回ifFalse
Example ¶
v1 := IIf(true, 5, 1) fmt.Println(fmt.Sprintf(`%v %T`, v1, v1)) v2 := IIf(false, "5", "1") fmt.Println(fmt.Sprintf(`%v %T`, v2, v2))
Output: 5 int 1 string
func JSON ¶
JSON 对json数据进行格式化(带缩进)
Example ¶
var s = struct { Name string `json:"name"` Phone string `json:"phone"` }{ "Teval", "15656565656", } fmt.Println(JSON(s))
Output: { "name": "Teval", "phone": "15656565656" }
func Join ¶
Join 将数组以指定分隔符拼接为字符串
Example ¶
arr := []int{1, 2, 3, 4, 5} fmt.Println(Join(arr, "x"))
Output: 1x2x3x4x5
func Max ¶
Max 返回参数中的最大值(至少需要1个参数)
Example ¶
fmt.Println(Max(1, 2, 3, 4, 5, 4, 3, 2, 1)) fmt.Println(Max("a", "b", "999")) fmt.Println(Max("18", "179")) fmt.Println(Max(1))
Output: 5 b 18 1
func Md5 ¶
Md5 []byte转md5
Example ¶
fmt.Println(Md5([]byte("abcdefg")))
Output: 7ac66c0f148de9519b8bd264312c4d64
func Md5Any ¶
Md5Any any转md5
Example ¶
var s = struct { Name string Phone string }{ "Teval", "15656565656", } fmt.Println(Md5Any(s)) fmt.Println(Md5Any(fmt.Sprintf(`%+v`, s))) fmt.Println(fmt.Sprintf(`%+v`, s))
Output: 29e1f5c14d500cdc87d7543e07acd9de 29e1f5c14d500cdc87d7543e07acd9de {Name:Teval Phone:15656565656}
func Md5Str ¶
Md5Str string转md5
Example ¶
fmt.Println(Md5Str("abcdefg"))
Output: 7ac66c0f148de9519b8bd264312c4d64
func Min ¶
Min 返回参数中的最小值(至少需要1个参数)
Example ¶
fmt.Println(Min(1, 2, 3, 4, 5, 4, 3, 2, 1)) fmt.Println(Min("a", "b", "999")) fmt.Println(Min("18", "179")) fmt.Println(Min("1"))
Output: 1 999 179 1
func NewErr ¶
NewErr 生成error,多个参数以:分隔
Example ¶
err := NewErr("假装有个错误") fmt.Println(fmt.Sprintf(`%v %T`, err, err))
Output: 假装有个错误 *errors.errorString
func Nvl ¶
func Nvl[T comparable](val T, vals ...T) T
Nvl 返回参数中第1个不为空的值
- 类似oracle的nvl
Example ¶
fmt.Println(Nvl("")) fmt.Println(Nvl("", "a")) fmt.Println(Nvl("", "", "b", "c")) fmt.Println(Nvl(0, 1, 2)) fmt.Println(Nvl(5, 1, 2))
Output: a b 1 5
func PrintColor ¶
PrintColor 输出指定颜色字体,多个参数以\t分隔
Example ¶
PrintColor(color.FgHiMagenta, "abc", "def") fmt.Println("abc\tdef")
Output: abc def
func PrintRed ¶
func PrintRed(msg ...any)
PrintRed 输出红色字体,多个参数以\t分隔
Example ¶
PrintRed("error")
Output:
func RandAreaCode ¶ added in v0.1.3
func RandAreaCode() string
func RandAreaName ¶ added in v0.1.3
func RandAreaName() string
func RandChar ¶ added in v0.1.0
Example ¶
fmt.Println(RandChar(24))
Output: a6c0c22f130ac319bfa81f1a79de5c91
func RandDevice ¶ added in v0.0.13
func RandDevice() (brand, model string)
Example ¶
fmt.Println(RandDevice())
Output: HUAWEI YAL-AL00
func RandIMEI ¶
func RandIMEI() string
RandIMEI 生成随机的手机IMEI串号
Example ¶
fmt.Println(RandIMEI())
Output: 254376154169509
func RandKey ¶
RandKey 生成指定长度的字符串
Example ¶
fmt.Println(RandKey(32))
Output: a6c0c22f130ac319bfa81f1a79de5c91
func RandLocation ¶
RandLocation 生成国内随机经纬度
Example ¶
fmt.Println(RandLocation())
Output: 44.1285743781 100.3852417065
func RandStr ¶
RandStr 生成指定长度的字符串
Example ¶
fmt.Println(RandStr(32))
Output: 62c7281i0gg5ejk54gcdmg3561793437
func Sha256 ¶
Sha256 Sha256加密
Example ¶
fmt.Println(Sha256([]byte("abcdefg")))
Output: 7d1a54127b222502f5b79b5fb0803061152a44f92b37e23c6527baf665d4da9a
func Sha256Any ¶
Sha256Any Sha256加密
Example ¶
var s = struct { Name string Phone string }{ "Teval", "15656565656", } fmt.Println(Sha256Any(s)) fmt.Println(Sha256Any(fmt.Sprintf(`%+v`, s))) fmt.Println(fmt.Sprintf(`%+v`, s))
Output: e0866e43fa7f387f59dac989699b73195e1b6b3d84e7e2ceb923c21c2b227e6b e0866e43fa7f387f59dac989699b73195e1b6b3d84e7e2ceb923c21c2b227e6b {Name:Teval Phone:15656565656}
func Sha256Str ¶
Sha256Str Sha256加密
Example ¶
fmt.Println(Sha256Str("abcdefg"))
Output: 7d1a54127b222502f5b79b5fb0803061152a44f92b37e23c6527baf665d4da9a
func Space ¶
Space 返回指定数量的空格
Example ¶
fmt.Println(fmt.Sprintf(`_%s_`, Space(2))) fmt.Println(len(Space(2)))
Output: _ _ 2
func Str ¶
Str 转为string
Example ¶
fmt.Println(fmt.Sprintf(`%v %T`, Str(nil), Str(nil))) fmt.Println(fmt.Sprintf(`%v %T`, Str(5), Str(5)))
Output: string 5 string
func StrToFloat32 ¶
StrToFloat32 string转float32
Example ¶
f32 := StrToFloat32("5.2648") fmt.Println(fmt.Sprintf(`%v %T`, f32, f32))
Output: 5.2648 float32
func StrToFloat64 ¶
StrToFloat64 string转float64
Example ¶
f64 := StrToFloat64("5.2648") fmt.Println(fmt.Sprintf(`%v %T`, f64, f64))
Output: 5.2648 float64
func Trim ¶
Trim 清除字符串首尾的指定内容
- 默认cutest "[\\s\\t\\r\\n]+"
Example ¶
fmt.Println(len(Trim(" \r\n 56 66 1"))) cutset := "[\\s\\t\\r\\n1]+" fmt.Println(Trim(" \r\n 56 66 1", cutset))
Output: 8 56 66
func UUID ¶
func UUID() string
UUID 生成UUID
Example ¶
fmt.Println(UUID())
Output: ea0935aa-4cbb-4bf3-8075-bfd81569baae
Types ¶
type AreaCodeItem ¶ added in v0.1.3
func RandAreaCodeItem ¶ added in v0.1.3
func RandAreaCodeItem() AreaCodeItem