From 18a59144d584cc46417f558fc66d8c85be5c18a5 Mon Sep 17 00:00:00 2001 From: CC11001100 Date: Fri, 11 Aug 2023 00:20:30 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=AE=8C=E5=96=84=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/README.md b/README.md index 917b4b9..aed4413 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,21 @@ func Return[T any](boolExpression bool, trueReturnValue, falseReturnValue T) T { 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 @@ -91,3 +106,30 @@ func main() { ``` +或者使用函数进行返回,仅有被命中分支的函数才会得到执行,不过这种方式并不简洁并不建议使用: + +```go +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分支被执行了 + // 是 + +} +``` +