You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
2.2 KiB

package utility
import (
"fmt"
"github.com/gogf/gf/v2/util/gconv"
"reflect"
"strings"
)
/*
*
数字转成固定长度字符串,并在空缺位置补足固定字符串
num 数字
str 空缺替代字符串
l 长度
*/
func SuppLenZero(num int64, str string, l int) string {
lenStr := gconv.String(num)
if len(lenStr) == l {
return lenStr
}
if len(lenStr) < l {
count := l - len(lenStr)
for i := 0; i < count; i++ {
lenStr = str + lenStr
}
} else {
temp := ""
for i := 0; i < l; i++ {
temp += str
}
return temp
}
return lenStr
}
func CheckNum(num int64) int64 {
if num > 100 {
return 100
}
if num < 0 {
return 0
}
return num
}
func FormatStringSliceToSQL(s []string) string {
var builder strings.Builder
builder.WriteString("(")
for i, v := range s {
if i > 0 {
builder.WriteString(", ")
}
builder.WriteString("'")
builder.WriteString(v)
builder.WriteString("'")
}
builder.WriteString(")")
return builder.String()
}
// FormatSliceToSQL 接受一个任意类型的切片,并将其格式化为类似 ('a', 'b', 'c') 的字符串
func FormatSliceToSQL(slice interface{}) (string, error) {
// 使用反射获取切片的类型信息
v := reflect.ValueOf(slice)
if v.Kind() != reflect.Slice {
return "", fmt.Errorf("input is not a slice")
}
var builder strings.Builder
length := v.Len()
for i := 0; i < length; i++ {
if i > 0 {
builder.WriteString(", ")
}
element := v.Index(i).Interface()
// 根据元素类型进行格式化
switch element.(type) {
case string:
builder.WriteString("'")
builder.WriteString(element.(string))
builder.WriteString("'")
case int, int8, int16, int32, int64:
builder.WriteString("'")
builder.WriteString(gconv.String(reflect.ValueOf(element).Int()))
builder.WriteString("'")
case uint, uint8, uint16, uint32, uint64:
builder.WriteString("'")
builder.WriteString(gconv.String(reflect.ValueOf(element).Uint()))
builder.WriteString("'")
case float32, float64:
builder.WriteString("'")
builder.WriteString(gconv.String(reflect.ValueOf(element).Float()))
builder.WriteString("'")
default:
return "", fmt.Errorf("unsupported type: %T", element)
}
}
return builder.String(), nil
}