Golang 的三元表达式实现 Go语言技巧 Golang 的三元表达式实现

CC11001100 • 4026 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
项目地址: https://github.com/golang-infrastructure/go-if-expression # Golang 的三元表达式实现 # 一、开发初衷 Golang 中缺少三元表达式,就导致某些情况三元表达式一行就能搞定的事情到 Golang 里面就得写得很啰嗦, 这是无法忍受的,~~这个库就是借助大量自定义的 if 函数来实现类似三元表达式的功能~~,最新版本是基于泛型实现的。 使用此库之前: ```go if a % 2 == 0 { return "偶数" } else { return "奇数" } ``` 使用此库之后: ```go return if_expression.Return(a % 2 == 0, "偶数", "奇数") ``` 对比: ```diff - if a % 2 == 0 { - return "偶数" - } else { - return "奇数" - } + return if_expression.Return(a % 2 == 0, "偶数", "奇数") ``` ## 二、引入依赖 go get 安装: ```text go get -u github.com/golang-infrastructure/go-if-expression ``` 如果你不想增加新的依赖,直接拷贝下面这段代码到你的 utils 中,泛型的实现版本非常简洁: ```go 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 } } ``` # 三、Example 比如最常见的默认值场景: ```go threadNum := 0 fmt.Printf("线程数: %d", if_expression.Return(threadNum == 0, 1, threadNum)) ``` 使用的例子: ```go package main import ( "fmt" if_expression "github.com/golang-infrastructure/go-if-expression" ) func main() { r := if_expression.Return(true, "是", "否") fmt.Println(r) // Output: // 是 } ```
授权协议:
开发语言:
Golang 查看源码»
4026 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传