Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update README.md #4

Merged
merged 1 commit into from
Nov 22, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,44 @@
# 一、开发初衷

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

## 二、引入依赖

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.ReturnInt(threadNum == 0, 1, threadNum))
fmt.Printf("线程数: %d", if_expression.Return(threadNum == 0, 1, threadNum))
```

使用的例子:
Expand Down