From bf85b7ec5a74a6a6930b15bc57b7a257f82ccdf3 Mon Sep 17 00:00:00 2001 From: CC11001100 Date: Tue, 22 Nov 2022 11:33:04 +0800 Subject: [PATCH] update README.md --- README.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index df8962d..9b0cf0f 100644 --- a/README.md +++ b/README.md @@ -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)) ``` 使用的例子: