中文文档 |English Document
Golang中缺少三元表达式,就导致某些情况三元表达式一行就能搞定的事情到Golang里面就得写得很啰嗦,这是无法忍受的,这个库就是借助大量自定义的if函数来实现类似三元表达式的功能,最新版本是基于泛型实现的。
使用此库之前:
ifa%2==0 {return"偶数"}else {return"奇数"}使用此库之后:
returnif_expression.Return(a%2==0,"偶数","奇数")
对比:
- if a % 2 == 0 {- return "偶数"- } else {- return "奇数"- }+ return if_expression.Return(a % 2 == 0, "偶数", "奇数")go get安装:
go get -u github.com/golang-infrastructure/go-if-expression
如果你不想增加新的依赖,直接拷贝下面这段代码到你的utils中,泛型的实现版本非常简洁:
package if_expression// Return////@Description: if实现的三元表达式//@param boolExpression: 布尔表达式,最终返回一个布尔值//@param trueReturnValue: 当boolExpression返回值为true的时候返回的值//@param falseReturnValue: 当boolExpression返回值为false的时候返回的值//@return bool: 三元表达式的结果,为trueReturnValue或者falseReturnValue中的一个funcReturn[Tany](boolExpressionbool,trueReturnValue,falseReturnValueT)T {ifboolExpression {returntrueReturnValue}else {returnfalseReturnValue}}// ReturnByFunc////@Description: if实现的三元表达式//@param boolExpression: 布尔表达式,最终返回一个布尔值//@param trueReturnValue: 当boolExpression返回值为true的时候执行此函数并返回值//@param falseReturnValue: 当boolExpression返回值为false的时候执行此函数并返回值//@return bool: 三元表达式的结果,为trueReturnValue或者falseReturnValue中的一个funcReturnByFunc[Tany](boolExpressionbool,trueFuncForReturnValue,falseFuncForReturnValuefunc()T)T {ifboolExpression {returntrueFuncForReturnValue()}else {returnfalseFuncForReturnValue()}}比如最常见的默认值场景:
threadNum:=0fmt.Printf("线程数: %d",if_expression.Return(threadNum==0,1,threadNum))使用的例子:
package mainimport ("fmt"if_expression"github.com/golang-infrastructure/go-if-expression")funcmain() {r:=if_expression.Return(true,"是","否")fmt.Println(r)// Output:// 是}或者使用函数进行返回,仅有被命中分支的函数才会得到执行,不过这种方式并不简洁并不建议使用:
package mainimport ("fmt"if_expression"github.com/golang-infrastructure/go-if-expression")funcmain() {r:=if_expression.ReturnByFunc(true,func()string {fmt.Println("True分支被执行了")return"是"},func()string {fmt.Println("False分支被执行了")return"否"})fmt.Println(r)// Output:// True分支被执行了// 是}