File tree 1 file changed +25
-2
lines changed
1 file changed +25
-2
lines changed Original file line number Diff line number Diff line change 3
3
# 一、开发初衷
4
4
5
5
Golang中缺少三元表达式,就导致某些情况三元表达式一行就能搞定的事情到Golang里面就得写得很啰嗦,
6
- 这是无法忍受的,这个库就是借助大量自定义的if函数来实现类似三元表达式的功能。
6
+ 这是无法忍受的,~~ 这个库就是借助大量自定义的if函数来实现类似三元表达式的功能~~ ,最新版本是基于泛型实现的 。
7
7
8
8
## 二、引入依赖
9
9
10
+ go get安装:
11
+
10
12
``` text
11
13
go get -u github.com/golang-infrastructure/go-if-expression
12
14
```
13
15
16
+ 如果你不想增加新的依赖,直接拷贝下面这段代码到你的utils中,泛型的实现版本非常简洁:
17
+
18
+ ``` go
19
+ package if_expression
20
+
21
+ // Return
22
+ //
23
+ // @Description: if实现的三元表达式
24
+ // @param boolExpression: 布尔表达式,最终返回一个布尔值
25
+ // @param trueReturnValue: 当boolExpression返回值为true的时候返回的值
26
+ // @param falseReturnValue: 当boolExpression返回值为false的时候返回的值
27
+ // @return bool: 三元表达式的结果,为trueReturnValue或者falseReturnValue中的一个
28
+ func Return [T any](boolExpression bool , trueReturnValue, falseReturnValue T ) T {
29
+ if boolExpression {
30
+ return trueReturnValue
31
+ } else {
32
+ return falseReturnValue
33
+ }
34
+ }
35
+ ```
36
+
14
37
# 三、 Example
15
38
16
39
比如最常见的默认值场景:
17
40
18
41
``` go
19
42
threadNum := 0
20
- fmt.Printf (" 线程数: %d " , if_expression.ReturnInt (threadNum == 0 , 1 , threadNum))
43
+ fmt.Printf (" 线程数: %d " , if_expression.Return (threadNum == 0 , 1 , threadNum))
21
44
```
22
45
23
46
使用的例子:
You can’t perform that action at this time.
0 commit comments