-
Notifications
You must be signed in to change notification settings - Fork 0
/
variable_parameter.go
45 lines (40 loc) · 1.71 KB
/
variable_parameter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package variable_parameter
// TakeFirstParam 获取传递的可变参数,如果没有传递的话,则返回参数对应的默认值
func TakeFirstParam[T any](parameters []T) T {
if len(parameters) > 0 {
return parameters[0]
} else {
var zero T
return zero
}
}
// TakeFirstParamOrDefault 获取传递的可变参数,如果没有传的话则使用给定的默认值
func TakeFirstParamOrDefault[T any](parameters []T, defaultValue T) T {
if len(parameters) > 0 {
return parameters[0]
} else {
return defaultValue
}
}
// TakeFirstParamOrDefaultFunc 获取传递的可变参数,如果没有传的话则执行给定的defaultValueFunc来获取默认值,如果传递的话defaultValueFunc函数不会被执行
func TakeFirstParamOrDefaultFunc[T any](parameters []T, defaultValueFunc func() T) T {
if len(parameters) > 0 {
return parameters[0]
} else {
return defaultValueFunc()
}
}
// SetDefaultParam 如果传递了参数啥都不会做,如果没有传递的话则把给定的defaultValue放到parameters中,这样后面就可以直接使用parameters[0]的形式使用参数而不必担心越界
func SetDefaultParam[T any](parameters []T, defaultValue T) []T {
if len(parameters) != 0 {
return parameters
}
return append(parameters, defaultValue)
}
// SetDefaultParamByFunc 如果传递了参数啥都不会做,如果没有传递的话则执行defaultValueFunc来获取一个默认值,并把得到的默认值放到parameters中,这样后面就可以直接使用parameters[0]的形式使用参数而不必担心越界
func SetDefaultParamByFunc[T any](parameters []T, defaultValueFunc func() T) []T {
if len(parameters) != 0 {
return parameters
}
return append(parameters, defaultValueFunc())
}