Skip to content

golang-infrastructure/go-if-expression

Repository files navigation

Golang的三元表达式实现

中文文档 | English Document

一、开发初衷

Golang中缺少三元表达式,就导致某些情况三元表达式一行就能搞定的事情到Golang里面就得写得很啰嗦, 这是无法忍受的,这个库就是借助大量自定义的if函数来实现类似三元表达式的功能,最新版本是基于泛型实现的。

使用此库之前:

if a % 2 == 0 { return "偶数" } else { return "奇数" }

使用此库之后:

return if_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中的一个 func Return[T any](boolExpression bool, trueReturnValue, falseReturnValue T) T { if boolExpression { return trueReturnValue	} else { return falseReturnValue	} } // ReturnByFunc // //	@Description: if实现的三元表达式 //	@param boolExpression: 布尔表达式,最终返回一个布尔值 //	@param trueReturnValue: 当boolExpression返回值为true的时候执行此函数并返回值 //	@param falseReturnValue: 当boolExpression返回值为false的时候执行此函数并返回值 //	@return bool: 三元表达式的结果,为trueReturnValue或者falseReturnValue中的一个 func ReturnByFunc[T any](boolExpression bool, trueFuncForReturnValue, falseFuncForReturnValue func() T) T { if boolExpression { return trueFuncForReturnValue()	} else { return falseFuncForReturnValue()	} }

三、 Example

比如最常见的默认值场景:

threadNum := 0 fmt.Printf("线程数: %d", if_expression.Return(threadNum == 0, 1, threadNum))

使用的例子:

package main import ( "fmt"	if_expression "github.com/golang-infrastructure/go-if-expression" ) func main() { r := if_expression.Return(true, "是", "否") fmt.Println(r) // Output: // 是 }

或者使用函数进行返回,仅有被命中分支的函数才会得到执行,不过这种方式并不简洁并不建议使用:

package main import ( "fmt"	if_expression "github.com/golang-infrastructure/go-if-expression" ) func main() { r := if_expression.ReturnByFunc(true, func() string { fmt.Println("True分支被执行了") return "是"	}, func() string { fmt.Println("False分支被执行了") return "否"	}) fmt.Println(r) // Output: // True分支被执行了 // 是 }

About

Golang中的三元表达式的折中实现,用于减少代码行数提高可读性

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages