feat(user):通过完成用户检索功能,继续确定项目的基本代码结构。

This commit is contained in:
徐涛
2023-06-01 12:04:03 +08:00
parent 71f39c8c2f
commit 9aa32d99b9
7 changed files with 219 additions and 10 deletions

View File

@@ -2,6 +2,7 @@ package tools
import (
"encoding/json"
"fmt"
"strings"
"github.com/mozillazg/go-pinyin"
@@ -51,3 +52,37 @@ func PartitionSlice[T any](slice []T, chunkSize int) [][]T {
}
return divided
}
// 判断指定指针是否为空,如果为空,则返回指定默认值(指针形式)
func DefaultTo[T any](originValue *T, defaultValue T) T {
if originValue == nil {
return defaultValue
}
return *originValue
}
// 判断指定的指针是否为空,如果为空,则返回指定的默认字符串,或者返回指针所指内容的字符串形式。
func DefaultStrTo[T any](format string, originValue *T, defaultStr string) string {
if originValue == nil {
return defaultStr
}
return fmt.Sprintf(format, originValue)
}
// 判断指定表达式的值,根据表达式的值返回指定的值。相当于其他语言中的三目运算符。
func Cond[T any](expr bool, trueValue, falseValue T) T {
if expr {
return trueValue
}
return falseValue
}
// 使用给定的函数对指定的值进行判断,根据表达式的值返回指定的值。
func CondFn[T, R any](exprFn func(val T) bool, value T, trueValue, falseValue R) R {
return Cond(exprFn(value), trueValue, falseValue)
}
// 使用给定的函数对指定的值进行判断,如果表达式为真,则返回指定的值,否则返回另一个值。
func CondOr[T any](exprFn func(val T) bool, value, elseValue T) T {
return CondFn(exprFn, value, value, elseValue)
}